PROYECTO SPRING CON JPA
Al crear el proyecto en Spring Tools Suite agregar las
siguientes dependencias
Spring Web:
Porque trabajamos con protocolo HTTP
Spring Boot Dev Tools:
Permite reiniciar y desplegar cualquier cambio en código
Spring Data JPA:
Framework ORM que nos permite mapear las tablas a clases Java.
H2 Database: Base
de datos embebida
Creacion de estructura de carpetas necesarias
1) Paquete com.empresa.proyecto.controller con una clase ProductoController
package
com.empresa.proyecto.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.PathVariable;
import
org.springframework.web.bind.annotation.RestController;
import com.empresa.proyecto.entity.Producto;
import
com.empresa.proyecto.service.ProductoService;
@RestController
public class ProductoController {
@Autowired
private ProductoService productoService;
@GetMapping("/listar")
public List<Producto>
listar() {
return productoService.findAll();
}
@GetMapping("/ver/{id}")
public Producto detalle(@PathVariable Long id) {
return productoService.findById(id);
}
}
2) Paquete com.empresa.proyecto.dao con una interface ProductoDao
package
com.empresa.proyecto.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import
com.empresa.proyecto.entity.Producto;
public interface ProductoDao extends
JpaRepository<Producto, Long> {
}
3) Paquete com.empresa.proyecto.service con una interface ProductoService y una clase ProductoServiceImpl
package
com.empresa.proyecto.service;
import java.util.List;
import
com.empresa.proyecto.entity.Producto;
public interface ProductoService {
public List<Producto>
findAll();
public Producto
findById(Long id);
public Producto save(Producto
p);
public void delete(Producto p);
}
package
com.empresa.proyecto.service.impl;
import java.util.List;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service;
import com.empresa.proyecto.dao.ProductoDao;
import
com.empresa.proyecto.entity.Producto;
import
com.empresa.proyecto.service.ProductoService;
@Service
public class ProductoServiceImpl implements ProductoService {
@Autowired
ProductoDao
productoDao;
@Override
public List<Producto>
findAll() {
return productoDao.findAll();
}
@Override
public Producto
findById(Long id) {
return productoDao.findById(id).get();
}
@Override
public Producto
save(Producto p) {
return productoDao.save(p);
}
@Override
public void delete(Producto p) {
productoDao.delete(p);
}
}
4) Paquete com.empresa.proyecto.entity con una clase Persona
package
com.empresa.proyecto.entity;
import
java.io.Serializable;
import java.util.Date;
import
javax.persistence.Column;
import javax.persistence.Entity;
import
javax.persistence.GeneratedValue;
import
javax.persistence.GenerationType;
import
javax.persistence.Id;
import
javax.persistence.Table;
import
javax.persistence.Temporal;
import
javax.persistence.TemporalType;
@Entity
@Table(name = "producto")
public class Producto implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy =
GenerationType.IDENTITY)
private Long id;
@Column(name = "nombre", length = 50)
private String nombre;
@Column(name = "precio", precision = 6,
scale = 2)
private Double precio;
@Column(name = "fec_usuario_crea")
@Temporal(TemporalType.DATE)
private Date fecUsuarioCrea;
public Producto() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Double getPrecio() {
return precio;
}
public void setPrecio(Double precio) {
this.precio = precio;
}
public Date
getFecUsuarioCrea() {
return fecUsuarioCrea;
}
public void
setFecUsuarioCrea(Date fecUsuarioCrea) {
this.fecUsuarioCrea = fecUsuarioCrea;
}
}
5) Crear una conexion a una base de datos deseada, en este caso H2, para lo cual se incluira en la configuración del archivo
application.properties lo siguiente:
spring.application.name=servicio-productos
server.port=8001
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:navin
6) Crear un archivo data.sql en la ruta src/main/resources con el siguiente codigo SQL
insert into producto(nombre, precio,
fec_usuario_crea) values('PANASONIC', 800, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('SONY', 700, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('APPLE', 1000, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('SONY NOTEBOOK', 1000, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('HEWLETT', 500, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('BIANCHI', 600, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('NIKE', 100, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('ADIDAS', 200, NOW());
insert into producto(nombre, precio,
fec_usuario_crea) values('REEBOK', 300, NOW());
7) Para verificar que la base de datos H2 esta
funcionando ir a la siguiente URL en tu navegador http://localhost:8001/h2-console
Para ingresar no es necesaria ninguna contraseña
Una
vez ingresado a la interfaz puedes ver que JPA creo la tabla automáticamente
esto gracias a la anotación @Table de la clase Persona
8) Finalmente con se puede probar los API Rest
creadas con el programa POSTMAN





0 Comentarios