更新时间:2024年01月19日11时05分 来源:传智教育 浏览次数:
Session是Java应用程序和Hibernate进行交互时所使用的主要接口,是持久化操作的核心API。它主要用于读取、创建和删除映射对象的实例,这一系列的操作将被转换为数据表中的增加、修改、查询和删除操作。Session是轻量级的,实例的创建和销毁不需要消耗太多的资源,同时它还是Hibernate的一级缓存,这个缓存主要用于存放当前工作单元加载的对象。
获取Session实例有两种方式,一种是通过openSession()方法,另一种是通过getCurrentSession()方法。两种方法获取Session的代码如下所示:
以上两种获取Session实例的主要区别是:采用openSession()方法获取Session实例时,SessionFactory直接创建一个新的Session实例,并且在使用完成后需要调用close()方法进行手动关闭;而getCurrentSession()方法创建的Session实例会被绑定到当前线程中,它在提交或回滚操作时会自动关闭。
在Session中,提供了多个持久化的操作方法,其常用方法如表23-8所示。
表23-8 Session中的常用方法
需要注意的是,Session是线程不安全的,当多个并发线程同时操作一个Session实例时,就可能导致Session数据存取的混乱(当方法内部定义和使用Session时,不会出现线程问题)。因此设计软件架构时,应避免多个线程共享一个Session实例。