He estado intentando aprender sobre la primavera y la hibernación, y he utilizado muchos ejemplos en la red para armar una buena aplicación. Sin embargo, me di cuenta ahora de que Spring admite la administración de transacciones. En mi aplicación de primavera simplemente hice todas las llamadas que quería, directamente para hibernar. ¿Hay alguna razón/beneficio en cuanto a por qué la gente usaría la gestión de transacciones de Spring/db?Beneficios de usar Springs Gestión de transacciones versus uso de hibernación
Respuesta
Las ventajas reales son:
sintaxis declarativa de peso ligero. Compare:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit(); }
y
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
propagación de transacción flexible. Imagine que ahora necesita ejecutar este método
saveEmployee()
como parte de una transacción compleja.Con la gestión manual de transacciones, necesita cambiar el método ya que la gestión de transacciones está codificada. Con la primavera, la propagación de transacciones funciona sin problemas:@Transactional public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
reversión automática en el caso de excepciones
Supongo que debería preguntar, ¿cuál es el beneficio de usar hibernate con Spring? ¿Hibernate todavía trae algo a la mesa? –
@John: ¿Comparado con Spring sin Hibernate o Hibernate sin Spring? – axtavt
Estoy tratando de entender por qué alguien realmente usaría Hibernate si tuviera Spring. No parece que Hibernate los compre mucho. O tal vez me estoy perdiendo algo. –
El spring's reference doc menciones muy claro
El Spring Framework proporciona una abstracción consistente para la transacción gestión que ofrece los siguientes beneficios:
- proporciona un modelo de programación consistente a través de diferentes transacciones API como JTA, JDBC, Hibernate, JPA y JDO.
- Admite la gestión de transacciones declarativas.
- Proporciona una API más simple para la administración de transacciones programáticas que una serie de transacciones complejas API como JTA.
- Se integra muy bien con varias abstracciones de acceso a datos de Spring.
proporciona un modelo de programación consistente a través de diferentes transacción APIs tales como JTA, JDBC, Hibernate, JPA y JDO.
Digamos que actualmente utiliza la api de hibernación para la gestión de transacciones y, en algún momento, le conviene cambiar a JDO. Esto requiere el cambio de código de gestión de transacciones. Si usa Spring entonces no hay cambio.
Admite la gestión de transacciones declarativas.
similares a EJB
proporciona una API simple para la gestión de transacciones programática que un número de transacciones complejas API como JTA.
JTA y JDBC tienen diferentes API para la gestión de transacciones. Spring lo resuelve proporcionando una API uniforme.
Sí, pero en términos reales no estoy seguro de lo que eso significa. ¿Es una práctica estándar utilizar la gestión de transacciones de Spring sobre Hibernates? ¿No te estás perdiendo algunos de los beneficios de usar hibernate de esta manera? –
@John Baker - No, no lo eres. El HibernateTransactionManager de Spring (como era de esperar) utiliza las características de las transacciones de Hibernate, al tiempo que aprovecha la ventaja de las abstracciones unificadas de transacciones de Spring. Si está utilizando Spring y está usando transacciones, entonces debe usar las transacciones de Spring. – OrangeDog
- 1. Gestión de transacciones Django
- 2. ¿Cómo integrar la primavera con la sesión de hibernación y la gestión de transacciones?
- 3. Gestión de transacciones Postgresql con java
- 4. Node.js postgres + gestión de transacciones de base de datos
- 5. Patrón de gestión de transacciones a nivel de objeto
- 6. Uso de transacciones con subsónico
- 7. Uso de hibernación con genéricos
- 8. Gestión automática de transacciones de Hibernate con Spring?
- 9. ¿Beneficios de usar un constructor?
- 10. MongoDB: beneficios del uso de objetos incrustados
- 11. NHibernate sesión y gestión de transacciones en HttpModule
- 12. Uso de suma() en criterios de hibernación
- 13. Uso de MSMQ - System.Messaging versus WCF
- 14. ¿Beneficios de usar Spring EL sobre OGNL?
- 15. VBScript - Uso de la gestión de errores
- 16. Pruebas de JUnit independientes con Springs @Autowired
- 17. beneficios de usar directoryperdb en MongoDB
- 18. ¿Cuáles son los beneficios de usar WCF?
- 19. Transacciones de Mysql dentro de transacciones
- 20. Beneficios clave de MSMQ
- 21. Proveedor de contenido vs acceso directo a la base de datos (gestión de transacciones)
- 22. ¿Qué usar para la gestión de sesión?
- 23. ¿Qué administrador de transacciones usar? (JPA, Spring)
- 24. Beneficios del uso de la reserva() en un vector - C++
- 25. ¿Cuándo es apropiado usar genéricos versus herencia?
- 26. ¿Cuáles son los mayores beneficios de usar INDEXES en mysql?
- 27. los beneficios de awakeFromNib?
- 28. Beneficios de matrices
- 29. Cómo evitar el uso de actualización del esquema de hibernación
- 30. java.lang.verifyError en el tipo de uso específico de hibernación
¿Está utilizando dos fases se compromete en una base de datos, así como a otro lugar - Uso de primavera. de lo contrario, elige el que quieras usar. –
¿Qué es un compromiso en dos fases si pudiera preguntar? –