Session
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
Hibernate中Session对象是非线程安全的 ,不能定义成全局变量, 只能定义成局部变量。
Session代表的是Hibernate与数据库的链接对象,是与数据库交互的桥梁。
●Session中的API
■保存方法:
▲Serializable save(Object obj) Serializable可序列话 其实是ID
Customer customer = new Customer();
customer.setCust_name("cc");
try {
Serializable id = seesion.save(customer);
System.out.println(id);
} catch (Exception e) {
System.out.println(e);
// TODO: handle exception
}
结果:

■查询方法:
▲T get(Class c,Serializable id);

▲T load(Class c,Serializable id);
get 和load的区别 :
get方法
采用的立即加载,代码执行的时候,就马上发送 sql语句去查询,查询后返回真正的实体,当查询一个找不到的对象会返回为null
load方法
采用的是延时加载(lazy懒加载),代码执行到的时候,不发送sql语句,当真正用到对象时候才会发送sql.查询后是代理对象。javassist-3.18.1-GA.jar 利用javasisit技术的代理,查询一个找不到的对象 ,返回ObjectNotFoundException

■修改的方法:
▲void update(Object obj)

■删除的方法:
▲void delete(Object obj)

■保存或更新:
▲void saveOrUpdate(Object obj)

■查询:
▲ SQLQuery createSQLQuery(String queryString);
▲Query createQuery(String queryString);

本文深入解析Hibernate框架中的Session接口,探讨其在持久化操作中的角色,包括CRUD操作、线程安全性及与数据库交互的方式。同时对比了Session与HttpSession的区别,并详细介绍了Session中的API,如保存、查询、修改、删除等方法。
779

被折叠的 条评论
为什么被折叠?



