1. getCurrentSession()获取
获取的对象:无论执行多少次该方法,只要是在同一个线程中,获取的都是同一个Session对象。
对象的关闭:自动关闭Session,无需手动关闭
环境的注册:需要注册Session的运行环境
查询:查询必须在事务内执行
2. openSession()获取
获取的对象:每执行一次该方法,获取的都是同一个新的Session对象。
对象的关闭:必须手动关闭Session对象
环境的注册:无需注册
查询:查询可以不在事务内执行
3.获取Session对象
public class HbnUtils {
private static SessionFactory sessionFactory;
//获取Session对象
public static Session getSession() {
return getSessionFactory().getCurrentSession();
}
public static SessionFactory getSessionFactory() {
if (sessionFactory == null || sessionFactory.isClosed()) {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
return sessionFactory;
}
}
3.Session中的常用方法
save()/persist() 添加对象
update() 修改对象
saveOrUpdate() 添加或修改对象
delete() 删除对象
get()/load() 根据主键查询