Hibernate学习笔记三



Hibernate高级特性

C3P0数据库连接池的配置

<!-- 配置数据库连接池  C3P0 连接池 -->

第一个配置是告诉Hibernate使用什么数据库连接池,之后的配置参数一看就知道是什么意思没必要解释,但是配置的参数并不是最优的,要视实际情况而定。

======================================================================

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

<property name="c3p0.max_size">20</property>

<property name="c3p0.min_size">10</property>

<property name="c3p0.max_statements">200</property>

<property name="c3p0.timeout">500</property>

<property name="c3p0.acquire_increment">10</property>

<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->  

<property name="c3p0.idle_test_period">120</property> 

 

======================================================================

SessionFactory的二级缓存机制

一级缓存Session:其实Session的缓存机制并不能提高多大的效率,只是为了管理对象而已。因为每次Session的生命周期都很短,打开一会儿就关闭。  

二级缓存SessionFactory:

 

使用二级缓存的步骤:

默认情况下Hibernate是不开启二级缓存的。

1.cfg.xml文件中配置启动二级缓存

<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

设置hibernate.cache.provider_class属性,指定其他的缓存策略, 该缓存策略必须实现org.hibernate.cache.CacheProvider接口

有很多的缓存策咯提供商:比如ehcacheoscachejbosscache,我们主要使用EHcache

这些缓存jar包在Hibernatelib 包下的可选jar包中有。

二级缓存分为:

类级别配置:<class-cache usage="read-only" class=""/>

属性级别配置(通常指的是集合关联属性):

 

 

不管是一级缓存还是二级缓存都得在使用OID获取对象时才有效。(get or load)

对于Query.list()默认不使用缓存,即使写成where id=xx.也不会使用

 

 

如何理解二级缓存:SessionFactory是生产Session的工厂,里面的内存比Session大很多,里面能存储Session缓存过的东西,而每个Session之间是独立的,缓存的数据并不能共享,所以就产生了可以缓存所有Session里面的缓存数据的容器即SessionFactory.

 

 

摘录人家的一段话:

“不要想当然的以为缓存一定能提高性能,仅仅在你能够驾驭它并且条件合适的情况下才是这样的。hibernate的二级缓存限制还是比较多的,不方便用jdbc可能会大大的降低更新性能。在不了解原理的情况下乱用,可能会有1+N的问题。不当的使用还可能导致读出脏数据。 如果受不了hibernate的诸多限制,那么还是自己在应用程序的层面上做缓存吧。 
在越高的层面上做缓存,效果就会越好。就好像尽管磁盘有缓存,数据库还是要实现自己的缓存,尽管数据库有缓存,咱们的应用程序还是要做缓存。因为底层的缓存它并不知道高层要用这些数据干什么,只能做的比较通用,而高层可以有针对性的实现缓存,所以在更高的级别上做缓存,效果也要好些吧。”

 

Hibenate总结:

1.hibernate.cfg.xml 和 hbm.xml配置文件非常重要

2.关联映射(一对多和多对一还有一对一)

2.Session接口的方法和操作,Query接口

3.一级二级缓存机制

4.Hibernate框架的性能优化(配置数据库连接池、缓存策咯)

 

 

 在使用集成Struts2.x 和Hibernate3.6之后版本最好增加如下属性

<property name="javax.persistence.validation.mode">none</property>

Hibernate开发重难点

1.搭建Hibernate的开发环境(jarhibernate.cfg.xmlhbm.xml)

2.hibernate.cfg.xml的配置

*连接数据库的基本信息

*配置c3p0数据源的基本信息

*配置Hibernate的基本信息

*导入映射文件

3.映射文件:重点在于关联关系的映射还有一些常用配置比如懒加载之类的

*一对多与多队一的关联映射

*一对一的关联映射

4.Session对象的主要方法(研究API和源码)

5.Query对象的主要方法(研究API和源码)

6.对象的几种状态之间的转换 Session的一级缓存机制以及SessionFactory二级缓存机制

7.对于一级和二级缓存的理解

8.HQL查询语言(类似sql只是把table 换成类,把字段换成了属性而已)


 

 

 

 

 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值