0% encontró este documento útil (0 votos)
39 vistas14 páginas

CHULETA

El documento describe la implementación de un servicio de pedidos que gestiona la inserción de pedidos y el cálculo de descuentos en productos. Se detallan las prácticas adecuadas para manejar conexiones a bases de datos, así como la recuperación de claves generadas automáticamente. También se menciona la importancia de asignar variables y retornar resultados según la lógica del método en el contexto de llamadas a DAO.

Cargado por

ssgvdp1995
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas14 páginas

CHULETA

El documento describe la implementación de un servicio de pedidos que gestiona la inserción de pedidos y el cálculo de descuentos en productos. Se detallan las prácticas adecuadas para manejar conexiones a bases de datos, así como la recuperación de claves generadas automáticamente. También se menciona la importancia de asignar variables y retornar resultados según la lógica del método en el contexto de llamadas a DAO.

Cargado por

ssgvdp1995
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Uso de commit y asignación directa para que no sea null.

public class PedidoService {


private final PedidoDAO pedidoDAO = new PedidoDAOIMpl();
//TODO: Crear pedido
public void insertarPedido(PedidoEntity pedido) throws
SQLException {
if ([Link]() == null) {
// Si el estado del pedido es null, asignamos un estado
por defecto
EstadoPedidoEntity estadoPedido = new
EstadoPedidoEntity();
[Link](1); // Asigna un ID de estado
predeterminado (por ejemplo, "En proceso")
[Link](estadoPedido);
}

try(Connection connection =
[Link]().getConnection()){
try{
[Link](false);

[Link](connection, pedido);
[Link]();

} catch (SQLException e) {
[Link]();
throw new RuntimeException(e);
}
}
}
}
CALCULO DESCUENTO
public List<ProductoEntity> findAllProducts() throws SQLException {

try(Connection connection =
[Link]().getConnection()) {
List<ProductoEntity> productos =
[Link](connection);

for (ProductoEntity e : productos){


BigDecimal precio = [Link]();
BigDecimal descuento = [Link]();
if(descuento != null &&
[Link]([Link])>0){

BigDecimal calculoDescuento=
[Link]().multiply(descuento).divide(new BigDecimal(100),2,
RoundingMode.HALF_UP);
BigDecimal descontado =
[Link]().subtract(calculoDescuento).setScale(2,
RoundingMode.HALF_UP);;
[Link](descontado);
}else {

[Link]([Link](2,
RoundingMode.HALF_UP));
}
}

return productos;
}
}

try (ResultSet generatedKeys = [Link]()) {


if ([Link]()) {
[Link]([Link](1));
}
}
Estás inicializando un nuevo PedidoEntity:

java
Copiar código
pedido = new PedidoEntity();

Esto está anulando el valor del pedido que se pasa como parámetro al método. La
instancia pedido que llega al método ya contiene la información que quieres insertar,
pero al crear un nuevo objeto PedidoEntity, terminas ignorando los datos pasados
como argumento.

RETURNED KEYS

EN resulset se invierten las posiciones


try(ResultSet rs = [Link]()){
if([Link]()){
[Link]([Link](1));
En el ps fijate que al ser objetos se gettea primero el objeto y luego el atributo. O sea,
cuando el os es sobre un objeto, primero get al objeto y luego. y se busca su atributo aka
foreign key.

Por otra parte

Al usar Statement.RETURN_GENERATED_KEYS en el PreparedStatement, estás


indicando que deseas recuperar las claves generadas automáticamente (como el id del
nuevo pedido) después de ejecutar la inserción.

El método [Link]() devuelve un ResultSet con las claves generadas,


y el número 1 en [Link](1) se refiere a la primera columna de ese ResultSet, que
en este caso será el id del pedido recién insertado.

LLAMADA A MÉTODO PRIVADO


LLAMADA AL DAO
Cómo sé cuándo en el service la llamada al dao tiene que ser con un igual, osea así,

List<ProductoEntity> productos = [Link](connection)

1.​

y cuándo no, osea así

[Link](connection, pedido)
Resumen general

●​ Asignación a variable: Cuando necesitas realizar más operaciones o verificaciones


con el objeto retornado antes de finalizar el método.
●​ Retorno directo: Cuando el objetivo del método es solo devolver el resultado
obtenido del DAO, sin lógica adicional.

En definitiva, la elección depende de si vas a necesitar trabajar con el objeto (lo que
requiere una variable) o si simplemente quieres devolver el valor obtenido directamente.

no te sigo. quiero decir, aqui tb estaa retornanado algo, no? return


[Link](connection, nombre, talla,
color)

DAOS

Si empieza en LIST
public List<ProductoEntity> findAllProducts(Connection
connection) throws SQLException {
List<ProductoEntity> productos = new ArrayList<>();

luego
while([Link]()) {
ProductoEntity producto = new ProductoEntity();
// los rs
tienen que ser de tantas columnas como sea la
select(consulta sql en general)
[Link]([Link]("id"));
[Link]([Link]("codigo_barra"));
[Link](producto);
}
}
return productos;

Si es un único objeto
public ProductoEntity
getFirstProductoByNameTallaAndColor(Connection connection, String
nombre, String talla, String color) throws SQLException {
ProductoEntity producto = null;
y luego
try(ResultSet rs = [Link]()){
if ([Link]()){

producto = new ProductoEntity();


[Link]([Link]("id"));

}
return producto;

WHERE y ?
Si no hay where en la consulta no hay ?. Esto hace que tampoco haya ps.1… y que el
resulset no necesite try.
String sql = "Select distinct on (nombre) * from producto"; // los
rs tienen que ser de tantas columnas como sea la select

try (PreparedStatement ps = [Link](sql)){

ResultSet rs = [Link]();

RS
// los rs tienen que ser de tantas columnas como sea la
select(consulta sql en general)

Por otra parte solo se utiliza resulset en los select,


salvo que el insert requiera de generated keys.

OTRO PRIVATE
FICHEROS
XML
Para el siguiente XML construye un XSD y crea un programa usando JAXB para procesarlo.
<?xml version="1.0" encoding="UTF-8"?>
<paises>
<pais nombre="Italia">
<capital>Roma</capital>
<poblacion>60.36</poblacion>
</pais>
<pais nombre="Spain">
<capital>Madrid</capital>
<poblacion>4694</poblacion>
</pais>
</paises>
Para el XML que podéis encontrar en el aula virtual construye un XSD y crea un programa
usando JAXB para procesarlo. En concreto se pide que aparezca los datos del cliente,
así como las líneas de compra de la factura y por supuesto el total del dinero en esa factura
CREAR XML
CREAR MARSHALL

DESSERIALIZAR UNMARSHALL

También podría gustarte