hibernate的Configuration,SessionFactory,Session在API中的一些理解和翻译
author:heaven
一:
Configuration:
(1)当创建一个SessionFactory的时候,Configuration实例允许应用程序使用指定的资源文件和映
射文件,通常一个应用程序将创建唯一的Configuration,创建一个唯一的SessionFactory,接着创建
客户端请求服务的线程所需要的Session实例。
(2)只被当做初始化一次,Sessionfactory不可改变,不能保留任何信息。
(3)其中该对象里有个方法叫buildSessionFactory(),作用:在这个Configuration对象里使用资
源文件和映射文件,因此改变这个Configuration后,创建的SessionFactory将不受影响。
二:
SessionFactory:
它的主要作用就是创建Session实例,通常一个应用程序有一个唯一的SessionFactory实例和从这
个SessionFactory里包含客户端请求服务所需要的Session。一个SessionFactory的内部状态时不可以
改变的只要它被创建,这个内部状态就被决定了,这种内部状态包含了所有的对象映射关系的元数据
。
三:
Session:
(1)它是在java应用程序和Hibernate之间运行的主要接口。
(2)Session的生命周期是逻辑事务的创建到结束(大型的事务可能分成若干个数据库事务)。
(3)主要Session的方法是为映射的实体类对象提供创建,读,删操作。
(4)一个实例可能存在三种状态:
A:transient(短暂态):没有进行持久化,也没连接任何Session。
B:persistent(持久态):连接了唯一的Session。
C:detached(释放态):持久性过了,没有与任何Session关联。
(5)短暂态实例可能被save(),persist(),saveOrUpdate()变为持久态,持久态可以被delete()方
法变为短暂态,任何状态的实例被get()或者load()方法返回都变为持久太,释放态可能被
update(),saveOrUpdate(),lock()或者replicate()变为持久太,短暂态或者释放太的实例可以
被一个持久化实例的merge()方法变为持久太。
(6)调用save()和persist()(坚持的意思)方法的结果是插入SQL语句,delete()是删除的意思
,update(),merge()是更新SQl语句。
(7)设计者并没有打算设计成线程安全的,从一个SessionFactory实例替换为每一个线程或者事务
所包含的它自己的实例。