Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

319
Vistas
Hibernate: los objetos se guardan sin transacción Objeto

Tengo el siguiente código para guardar el objeto en la base de datos,

 import java.util.HashMap; import java.util.Map; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.hibernate.Session; import org.hibernate.Transaction; import model.Hibernatetest; public class Test { static EntityManagerFactory objEntityManagerFactory; static Session objSession; static Transaction objTransaction; public static void main(String[] args) { objSession = (Session) objEntityManagerFactory.createEntityManager().getDelegate(); //objTransaction = objSession.getTransaction(); //objTransaction.begin(); Hibernatetest obj = new Hibernatetest(); obj.setName("Nobal"); obj.setAddress("wlfjegtjwdfhdg"); objSession.save(obj); obj.setName("235611111"); objSession.flush(); //objTransaction.commit(); objSession.close(); } public static void getConnection() { Map<String,String> properties = new HashMap<String,String>(); properties.put("hibernate.connection.username", "root"); properties.put("hibernate.connection.password", "root"); properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver"); properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/hibernatetest"); properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); objEntityManagerFactory = Persistence.createEntityManagerFactory("Hibereg", properties); } }

y el archivo de persistencia es el siguiente:

 <persistence xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="Hibereg"> <class>entities.Hibernatetest</class> </persistence-unit> </persistence>

Caso 1:

El problema es cuando ejecuto el código anterior usando hibernate-core-5.2.8.jar , y no creo ningún objeto de transacción (puede ver que comenté el código relacionado con la transacción), entonces el código anterior me da la siguiente excepción.

 'TransactionRequiredException' no transaction is in progress.'

Sin embargo, si elimino el comentario del código de la transacción, todo funciona bien.

Caso 2:

Pero cuando ejecuto el código usando hibernate-core-4.1.4.jar , al comentar el código de la transacción en el fragmento de código proporcionado anteriormente, no da tal excepción. Es decir, nunca se queja por la ausencia del objeto de transacción y guarda el objeto en la base de datos. ¿Qué está pasando aquí?

Leí en Internet que el objeto de transacción es imprescindible para realizar inserciones y actualizaciones (no estoy seguro de las selecciones), pero ¿cómo se ejecuta correctamente el segundo escenario?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Desde Hibernate 5.2, esta funcionalidad se incluye en línea con la especificación JPA que no permite ninguna actualización fuera de los límites de una transacción. Para anularlo, use lo siguiente en su configuración de hibernación: -

 properties.put("hibernate.allow_update_outside_transaction", "true");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda