ORM

作者: 汤圆叔 | 来源:发表于2018-07-02 19:06 被阅读12次

    Hibernate了解吗?

    • 项目中还是多使用mybatis,因为Hibernate配置相对复杂、对于复杂的sql优化困难。
    • Hibernate的主要实现是通过SessionFactory创建Session,然后通过Session操作缓存,最后完成数据库表与对象的状态数据同步。
    • Hibernate的缓存技术分为一级缓存(Session缓存,Session关闭后就消失),二级缓存(一般通过ehcache实现的sessionFactory应用级别只读缓存)
    • Hibernate数据对象存在三种状态:临时(刚new未交给Session处理)、持久化(交给Session处理)、游离(Session清空或关闭)
    • Session.flush()清理缓存是指按照缓存中对象的状态的变化来同步更新数据库,但不清空缓存;Session.clear()清空是把Session 的缓存置空, 但不同步更新数据库。
    • load()支持延迟加载,get()不支持延迟加载,如果数据库中,没有 OID 指定的对象。通过 get方法加载,则返回的是一个null;通过load加载,则返回一个代理对象,如果后面代码如果调用对象的某个属性会抛出异常:org.hibernate.ObjectNotFoundException。
    • openSession()是直接 new 一个新的 Session 并返回,并且需要手动关闭;getCurrentSession()通过ThreadLocal使Session在线程间隔离且在同一线程内共享,基于Spring管理时通过此机制实现事务及会话管理,无需手动创建、关闭Session。

    相关文章

      网友评论

          本文标题:ORM

          本文链接:https://www.haomeiwen.com/subject/fpaluftx.html