Hibernate配置相关的类

Hibernate配置相关的类

     Configuration类(负责管理Hibernate的配置信息)

     当创建SessionFactory时,Configuration实例可以指定使用哪一个映射文档。应用程序通常只是创建一个Configuration实例,并通过它创建一个SessionFactory实例。

     当客户端发送一个请求线程时,SessionFactory初始化一个Session。 Configuration是Hibernate的入口,在新建一个Configuration的实例时,Hibernate会在classpath中查找hibernate.propertise文件,如果该文件存在,则将该文件的内容加载到内存中;如果不存在则抛出异常。Configure()方法默认会在classpath下面寻找hibernate.cfg.xml文件,如果没有找到该文件,系统会打印信息并抛出HibernateExcelption异常;如果找到该文件,configure()方法会首先访问,并获取该元素的name属性;如果非空,则将用这个配置信息来覆盖hibernate.propertise的hibernate.session_factory_name的配置值。

 

     SessionFactory类(负责创建Session实例)

     为了能创建一个SessionFactory对象,必须在Hibernate初始化时创建一个Configuration类的实例,并将已写好的映射文件交由它处理。这样,Configuration对象就可以创建一个SessionFactory对象,当SessionFactory对象创建成功后,Configuration对象就可以简单的抛弃他。

      SessionFactory sessionFactory = Configuration().configure().buildSessionFactory();

      SessionFactory是线程安全的,可以被多线程调用已取得Session,而且构造SessionFactory很消耗资源,多以多数情况下只是初始化一个SessionFactory,为不同的Session提供实例。

     

      Session类

      Session是Hibernate运作的中心,对象的生命周期,事务的管理,数据库的存取都与Session息息相关。

      虽然SessionFactory是线程安全的,但是Session不是。HibernateUtil中使用ThreadLocal可以有效隔离执行所使用的资源,所以避开了Session的多线程之间的数据共享问题。

       Hibernate中的缓存分为两种:一级缓存(Session级别),二级缓存(SessionFactory级别)

      Session的作用:

     (1) 充当蓄水池的作用,减少程序访问数据库的次数。当应用程序需要使用对象时,现在本session的缓存内查找,如果有此对象,则直接返回应用程序;如果没有,则发送SQL语句到数据库中查询,将记录的字段值组装成对象后存于Session中,以供应程序调用。

     (2) 保证缓存中的数据与数据库同步。 清理缓存:是指查看缓存中的数据与数据库是否同步,如果缓存数据与数据库不一样,则发送更新语句把缓存数据和数据库同步;如果一样,则不作操作。

      FlushMode有以下几种:

    (1) FlushMode.AUTO:Hibernate判断对象属性有没有更改,如果被更改过变成了脏数据,则在一个查询语句前将更新此改动以保证同步数据库;如果对象没有被改动,则在查询语句之前不用更新数据。这是默认的清理模式

    (2) FlushMode.COMMIT:在事务结束之前清理session的缓存,其他任何时候都不清理缓存。这样的设置将有可能使查出来的数据时脏数据。

    (3) FlushMode.NEVER:除非强制调用Session.flush(),否则永不清理缓存。这时候对数据库所做的修改只是限于内存,不会同步到数据库,数据库的数据相当于只是读数据。

    (4) FlushMode.ALWAYS:在每一个查询语句前都调用flush()进行缓存清理。这种模式是不必要的,而且是低效的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值