-
hibernate持久化类:
持久化:将内存中的数据永久存储到关系型数据库,就叫做数据的持久化
持久化类:一个Java类与数据库表建立了映射关系,这个类就叫持久化类。 -
持久化类的编写规则:
<1>持久化类需要提供无参的构造方法:因为hibernate的底层是需要反射生成类的实例。
<2>持久化类的属性需要私有,对私有的属性提供公有的get和set方法:因为hibernate底层会将查询到的数据进行封装。
<3>持久化类的属性要尽量使用包装类
<4>持久化类要有一个唯一标识OID与表的主键对应。
<5>持久化类尽量不要使用final修饰:因为hibernate的延迟加载机制是采用字节码增强技术,就是产生当前类的子类的,final修饰将不能产生子类。 -
hibernate的主键生成策略:
自然主键:把具有业务含义的字段作为主键
代理主键:把不具备业务含义的字段作为主键,一般取名为ID,整数类型以节省空间。
常用的主键生成策略:
-
持久化对象的三种状态:
<1>瞬时态(translent):new产生的不存在持久化标识OID,也未与session关联
<2>持久态(persistent):存在持久化标识OID,也与session相关联
<3>脱管态(detached):存在持久化标识OID,没与session相关联。
三种状态的官方转换图:
code测试图:
需要注意的是,持久态对象能自动更新数据库。 -
hibernate的一级缓存:
缓存:降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。
hibernate的一级缓存:就是session缓存,session缓存就是一块内存空间,用来存放相互管理的java对象,在使用hibernate查询对象时,会先使用对象属性的OID值在一级缓存查找,找到直接取出,找不到才到数据库查找,在数据库查找到后也会放入一级缓存,一级缓存的作用就是减少对数据库的访问次数。 -
一级缓存的内部构造(快照区):
hibernate向一级缓存放入数据是,同时复制一份数据放入到hibernate快照中,当使用commit()方法提交事务时,同时会清理session的一级缓存,这时会判断一级缓存中的对象和快照中的对象是否一致,如果两个对象的属性发生变化,执行update语句,将缓存的内容同步到数据库并更新快照,一致则不执行update语句,hibernate快照的作用就是确保一级缓存中的数据与数据库中的数据保持一致。 -
hibernate的事务控制:
-
hibernate的其他API:
<1>Query
Query代表面向对象的一个hibernate查询操作,通常使用session.createQuery()方法接受一个HQL语句,然后调用Query的list()或uniqueResult()方法执行查询。
<2>Criteria
Criteria是一个完全面向对象,可扩展的条件查询API,通过他完全不需要考虑数据库底层如何实现以及SQL语句如何编写。
hibernate基础入门二
猜你喜欢
转载自blog.csdn.net/LetonLIU/article/details/89182627
今日推荐
周排行