Bienvenida e Introducción

1

Qué aprenderás sobre Hibernate y Java Spring

2

Instalar ambiente de desarrollo en Windows

3

¿Qué es una Aplicación Empresarial?

4

¿Cómo funcionan las Aplicaciones Web?

5

Servidores Web vs Servidores de Aplicación

6

Instalar ambiente de desarrollo Mac

7

Patrón de Arquitectura MVC

8

Características de los Servlet

9

Utilización del Servlet

10

Características y práctica de JSP

Comenzar con Spring Boot

11

Arquitectura de las Aplicaciones Web

12

Características de Spring Framework

13

Características de Spring Boot

14

Crear, cargar y configurar una aplicación en Spring Boot

15

Crear la estructura del proyecto

Spring Data JPA

16

Persistencia de objetos

17

Spring Data, Spring Data JPA

18

Iniciar la base de datos postgres utilizando Docker

19

Optimizar Pojos con Lombok

20

Mapear Tablas de la Base de Datos

21

Configurar la persistencia con Hibernate

Manejo de Negocio

22

Añadir JPA Repository

23

Implementar las operaciones de Consulta con JPA Repository

24

Implementar servicio de negocio para las operaciones CRUD

25

Manejar la transaccionalidad de un servicio de negocio

Spring REST

26

Instalar y configurar Swagger

27

Características de los Servicios Web y Spring Rest

28

Implementar las operaciones REST para crear y actualizar información

29

Implementar las operaciones REST para eliminar y consultar información

30

Documentación de los servicios REST con Swagger

Spring Security

31

Manejar la seguridad en una aplicación web

32

Características, instalación e integración de Spring Security

33

Personalizar la página de Login

Despliegue Aplicaciones Docker

34

Realizar la configuración de Docker Plugin

35

Crear una imagen docker de la aplicación

36

Subir la aplicación a docker hub

37

Ejecutar la aplicación dockerizada

38

Despedida del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Hibernate y Java Spring 2018

Curso de Hibernate y Java Spring 2018

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Manejar la transaccionalidad de un servicio de negocio

25/38
Recursos

Las transacciones son el conjunto de operaciones que afectan la base de datos (updates o deletes, no se recomienda realizar consultas de solo lectura) y se ejecutan en bloque, es decir, se ejecutan todas con éxito (commit) o no ejecutamos ninguna (rollback). Las transacciones empiezan y terminan a nivel de servicio y nunca a nivel de capa de datos, para indicar que una clase o método será transaccional utilizamos a anotación @Transactional.

El desafío de esta clase es completar los servicios de negocio para las tablas restantes.

Aportes 20

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

ACID

Según el sitio Tutorials Point:

_Una transacción a una base de datos es una secuencia de acciones que son manejadas como una única unidad de trabajo. Estas acciones o se completan todas en conjunto o no se completa ninguna. La administración de las transacciones es una parte importante en los sistemas de administración de bases de datos relacionales (o RDBMS por sus siglas en inglés) que se encuentran orientados a aplicaciones empresariales para asegurar la integridad y la consistencia de los datos. El concepto de transacción se describe con el acrónimo ACID.

• Atomicity (Atomicidad). Una transacción debe ser tratada como una unidad de operación única. Lo que quiere decir que o se completan todas las operaciones a la base de datos o ninguna.
• Consistency (Consistencia). Representa la consistencia de la integridad referencial de la base de datos, refiriéndose al respeto por el orden entre llaves primarias y foráneas.
• Isolation (Aislamiento). Como puede haber varias transacciones procesándose al mismo tiempo con datos muy similares o idénticos, cada transacción debe aislarse de las otras para evitar la corrupción de su estructura y sentido.
• Durability (Permanencia). Cuando la transacción se completa sus resultados deben guardarse permanentemente en la base de datos y estos no deben eliminarse por fallos del sistema.

Es común que los sistemas RDBMS ya garantizan ser ácidos, es decir la implementación de estos cuatro principios._

En Spring estos principios se aplican a través de los Commit y los Rollbacks de las transacciones, para más información pueden [leer este interesante artículo en inglés.

Referencias:
Tutorials Point. (S. f.). Spring Transaction Management. Tutorials Point, The biggest online tutorials library, it’s all free. Recuperado de: https://www.tutorialspoint.com/spring/spring_transaction_management

Hola buen dia, el metodo @Transactional , hace el rollback de manera interna , ya no tendríamos que escribir o usar toda la estructura de una transacción como se haría en php.
PDO::beginTransaction() , PDO::commit() y PDO::rollback() .
?

Hola, Suponiendo el siguiente caso (BANCO XYZ):

a) un cliente #1 consigna a mi cuenta 50 USD
b) un cliente #2 consigna a mi cuenta 100 USD
c) el BANCO justo me descuenta por cuota de crédito 150 USD
d) un cliente generoso #3 me consigna 1000 USD
e) de mi parte quiero consultar mi saldo actual.

  • Suponiendo que todos los puntos anteriores se realizaron exactamente a la misma hora, minuto y segundo:

¿El mecanismo del framework Spring me garantiza si o si (100% seguro) la integridad de mis datos en relación a las transacciones efectuadas?
¿De que manera se bloquean las tablas para ir atendiendo una a una las transacciones usando este gran Framework?

Se supone que por eso los entes gubernamentales y entidades bancarias hacen uso de este tipo de tecnologías y tan solo quiero corroborar que hay garantías en este aspecto.

gracias.

Para que quiero poner una transaccion de solo lectura en toda mi clase?!, si solo hago una consulta de tipo get para traerme una lista de clientes, despues de eso mis demás métodos hacen modificaciones.

Me la pasé horas tratando de averiguar porqué no se guardaba mi cliente hasta que me di cuenta de lo que era tan obvio (el readOnly).

Si tan solo lo hubieras comentado!

El tag transactional no avisa cuando hizo rollback, solo lo ahce y ya, como manejo esto?
A parte me está dando rollback en el metodo create del servicio de cliente, que ha sido donde asta ahora he testeado con swagger. Como se en donde está el error transaccional?

Si sería bueno (siendo un curso profesional) que explicaran bien al tema técnico el por qué el uso de la anotación @Transactional y sobretodo, ¿qué pasa si no uso esta anotación, va a afectar las transacciones en base de datos cuando se llame este servicio?. Ver cómo afecta en vivo el uso de @Transactional. Me decepciona este curso cada vez más.

Porque el transactional no se coloca a nivel de repository???

import org.springframework.transaction.annotation.Transactional;

Es decir que si pongo @Transactional antes de mi clase de servicio entonces todos los métodos de esa clase tendrán implícitamente dicha anotación ?
O es necesario declarar la anotación para cada método incluida la anotación de cabecera?

porque Transactional el no importo el paquete de javax?

import javax.transaction.Transactional;

Excelente!!

Hola buen dia, si un metodo @Transactional tiene varias transacciones, si alguna de ellas falla le daria rollback a todas ejecutadas previamente del mismo metodo?

Hola,
Para el manejo de las transacciones (commit, rollback), se realizan así no se trabaje con un servidor transaccional sino con el Tomcat embebido ?

Porqué la documentación de esta anotación me recomienda poner el atributo rollbackFor de la siguiente forma:

@Transactional(readOnly = true, rollbackFor = Exception.class)

?

gracias seria bueno que explicaran con diagramas las estructura de las capas de persistencia y de la construcción en general

Super transactional 😃

Creo que basicamente fue muy claro para mi el tema de transaccionalidad aunque hubiera sido muy bueno si el tutor hubiera profundizado mas en este asunto