Hibernate的事务管理:java
1、开启自动提交事务数据库
<property name="hibernate.connection.autocommit">true</property><!-- 自动提交事务 -->
一、 当自动提交事务为开启时:不手动开启事务,数据持久化到数据库。session
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();
数据被持久化到数据库:app
二、 当自动提交事务为开启时:手动开启事务,强制提交事务数据持久化到数据库。ui
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();
数据没有被持久化到数据库,可是序列已经被读取。hibernate
2、没有开启自动提交事务code
<!-- 自动提交事务 --> <!-- <property name="hibernate.connection.autocommit">false</property> -->
一、手动开启事务数据被持久化到数据库。事务
二、不手动开启事务,数据没有被持久化到数据库,但序列增长。get