Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

317
Views
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?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

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");
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!