一、Session中的函数:
1、session中的函数get(Class args0,Serializable args1),获取数据库中获取类实例按照主键查找args1,load(Class args0,serializable args1)具有同样的功能,只不过load采用懒加载机制,在问访问load返回数据之前是不访问数据库的,load返回的对象从不为空。
2、函数persist()与save()都是保存对象的功能,区别是:save()在没有开启事物的情况下会将数据插入数据库,之后数据库回滚将数据删除、而persist不会插入数据。在开启事物的情况下,persist()与save()功能相同。
二、实体对象的三种状态:
瞬时状态(Transient)、持久状态(Persistent)、脱管状态(Detached)。
对象处于那种状态与session和数据库之间的关系决定。
(1)对象如果和session没有关联并且数据库中不存在与之对应的数据存储,那么对象处于瞬时状态。
(2)对象如果和session有关联但数据库中还未存在与之对应的数据,那么对象处于托管状态。
(3)对象如果和session有关联并且数据库中已经存在与之对应的数据,那么对象处于持久状态。
三种状态之间的转换图如下:
三、如果实体类名或属性名与数据库的关键字冲突:
(1)利用~将冲突的关键字括起来。
(2)改表名(hibernate创建表时起的名字)、属性名。