Hibernate事务代码规范写法
package com.hlg.hibernatetest;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import com.hlg.entity.User;
import com.hlg.utils.HibernateUtils;
public class HibernateSelect {
@Test
public void testSaveOrUpdate(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
//2 获取session
Session session = sessionFactory.openSession();
//3 开启事务
Transaction tx = session.beginTransaction();
// 根据uid = 1 查询
//执行第一个get方法是否查询数据库,是否发送sql语句
User user1 = session.get(User.class, 1);
System.out.println(user1);
// 再 根据uid = 1 查询
//执行第一个get方法是否查询数据库,是否发送sql语句
User user2 = session.get(User.class, 1);
System.out.println(user2);
//5 提交事务
tx.commit();
//6 关闭资源
session.close();
sessionFactory.close();
}
@Test
public void testCache(){
//1 调用工具类得到sessionFactory
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
//2 获取session
Session session = sessionFactory.openSession();
//3 开启事务
Transaction tx = session.beginTransaction();
// 根据uid = 1 查询
User user1 = session.get(User.class, 1);
user1.setUsername("黄山");
//持久态自动更新数据库
//session.update(user1);
//5 提交事务
tx.commit();
//6 关闭资源
session.close();
sessionFactory.close();
}
//Hibernate事务代码规范写法
public void testTx(){
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
User user = new User();
user.setUsername("茶叶");
user.setPassword("110");
user.setAddress("云南");
session.save(user);
//异常
int i = 2/0;
//提交事务
tx.commit();
}catch(Exception e){
//回滚事务
tx.rollback();
}finally{
//关闭
session.close();
sessionFactory.close();
}
}
}