hibernate基础入门二

  1. hibernate持久化类:
    持久化:将内存中的数据永久存储到关系型数据库,就叫做数据的持久化
    持久化类:一个Java类与数据库表建立了映射关系,这个类就叫持久化类。

  2. 持久化类的编写规则:
    <1>持久化类需要提供无参的构造方法:因为hibernate的底层是需要反射生成类的实例。
    <2>持久化类的属性需要私有,对私有的属性提供公有的get和set方法:因为hibernate底层会将查询到的数据进行封装。
    <3>持久化类的属性要尽量使用包装类
    <4>持久化类要有一个唯一标识OID与表的主键对应。
    <5>持久化类尽量不要使用final修饰:因为hibernate的延迟加载机制是采用字节码增强技术,就是产生当前类的子类的,final修饰将不能产生子类。

  3. hibernate的主键生成策略:
    自然主键:把具有业务含义的字段作为主键
    代理主键:把不具备业务含义的字段作为主键,一般取名为ID,整数类型以节省空间。
    常用的主键生成策略:
    主键生成策略

  4. 持久化对象的三种状态:
    <1>瞬时态(translent):new产生的不存在持久化标识OID,也未与session关联
    <2>持久态(persistent):存在持久化标识OID,也与session相关联
    <3>脱管态(detached):存在持久化标识OID,没与session相关联。
    三种状态的官方转换图:
    转换图
    code测试图:
    code
    需要注意的是,持久态对象能自动更新数据库。

  5. hibernate的一级缓存:
    缓存:降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。
    hibernate的一级缓存:就是session缓存,session缓存就是一块内存空间,用来存放相互管理的java对象,在使用hibernate查询对象时,会先使用对象属性的OID值在一级缓存查找,找到直接取出,找不到才到数据库查找,在数据库查找到后也会放入一级缓存,一级缓存的作用就是减少对数据库的访问次数。

  6. 一级缓存的内部构造(快照区):
    hibernate向一级缓存放入数据是,同时复制一份数据放入到hibernate快照中,当使用commit()方法提交事务时,同时会清理session的一级缓存,这时会判断一级缓存中的对象和快照中的对象是否一致,如果两个对象的属性发生变化,执行update语句,将缓存的内容同步到数据库并更新快照,一致则不执行update语句,hibernate快照的作用就是确保一级缓存中的数据与数据库中的数据保持一致。

  7. hibernate的事务控制:
    hibernate事务隔离级别

  8. hibernate的其他API:
    <1>Query
    Query代表面向对象的一个hibernate查询操作,通常使用session.createQuery()方法接受一个HQL语句,然后调用Query的list()或uniqueResult()方法执行查询。
    在这里插入图片描述在这里插入图片描述
    <2>Criteria
    Criteria是一个完全面向对象,可扩展的条件查询API,通过他完全不需要考虑数据库底层如何实现以及SQL语句如何编写。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LetonLIU/article/details/89182627