Hibernate的事务管理:
一、开启自动提交事务
<property name="hibernate.connection.autocommit">true</property><!-- 自动提交事务 -->
1、 当自动提交事务为开启时:不手动开启事务,数据持久化到数据库。
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
//Transaction transaction = session.beginTransaction();
TbUser user = new TbUser();
user.setName("ceshi2");
user.setAge(15L);
user.setCity("sjz1");
session.save(user);
//transaction.commit();
session.close();
sessionFactory.close();
数据被持久化到数据库:
2、 当自动提交事务为开启时:手动开启事务,强制提交事务数据持久化到数据库。
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
TbUser user = new TbUser();
user.setName("ceshi2");
user.setAge(15L);
user.setCity("sjz1");
session.save(user);
//transaction.commit();
session.close();
sessionFactory.close();
数据没有被持久化到数据库,但是序列已经被读取。
二、没有开启自动提交事务
<!-- 自动提交事务 -->
<!-- <property name="hibernate.connection.autocommit">false</property> -->
1、手动开启事务数据被持久化到数据库。
2、不手动开启事务,数据没有被持久化到数据库,但序列增加。