随笔 - 303  文章 - 883  trackbacks - 0
<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

欢迎光临! 
闲聊 QQ:1074961813

随笔分类(357)

我管理的群

公共blog

  • n维空间
  • Email : java3d@126.com 群 : 12999758

参与管理的论坛

好友的blog

我的其他blog

朋友的网站

搜索

  •  

最新评论

(本人的文章是在放屁,再次建议,大家一定要好好地看看这本书)


Hibernate Quickly

--读书笔记



大家好啊 我是寻觅!
       相信大家已经对Hibernate 有了初步的了解,接下来我们将以最短的章节进一步去了解剩下的章节;这里我把书中我觉得最重要的内容写出来和大家分享,剩下的内容大家可以通过看这本书补上,没钱买书的朋友可以到我的前一个文《Hibernate Quickly--读书笔记(2)》那里去下载,英文版的pdf电子书去看看;
     好了进入正题,上次我们把配置文件给讲了:大家先看看这个图,整个基础知识部分,我们都将围绕着这个图来讲解:





配置、SessionFactory和Session使用部分讲完了,我们继续讲Session缓存,先看一段相关代码:


//从SessionFactory中获取一个Session
Session session = factory.openSession();

//将Event加载入Session中,并实例化Event对象
Event e = (Event) session.load(Event.class, myEventId);

    
//为加载的对象取名
e.setName("New Event Name");

    
//对对象进行操作,可以见到通过这种方式,可以减少对数
//据库的操作,提高系统的性能和安全性;通常我们的多
//部操作只需要一次的数据库持久化操作
session.saveOrUpdate(e);

    
//第二次操作
Event e = (Event) session.load(Event.class, myEventId);
e.setDuration(
180);
session.saveOrUpdate(e);

//刷新缓冲区将数据写入数据库,完成数据持久化
session.flush();


当我们的数据访问十分频繁时,我们还可以使用事务(Transaction实现批操作)和数据库池方式:这时我们需要设置一下我们的配置文件 hibernate.cfg.xml:


<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">
java:comp/UserTransaction
</property>


接着我们就可以使用事务(Transaction)了:


//开始第一个事务
Transaction tx0 = session.beginTransaction();
Event event 
= new Event();
//进行操作
session.saveOrUpdate(event);

//开始第二个事务
Transaction tx1 = session.beginTransaction();
Location location 
= new Location();
//进行操作
session.saveOrUpdate(location);

//分别提交两个事务
tx0.commit();
tx1.commit();


这里使用了Hibernate的JTA事务,它让你能像对待单一事务一样对待多个事务;数据池书中没这么提起,大家自己看 p74 页中的介绍;

接着我们进入主要的内容,Session缓存

 

缓存服务

提供者类

类型

EHCache

org.hibernate.cache.EhCacheProvider

内存,磁盘

OSCache

org.hibernate.cache.OSCacheProvider

内存,磁盘

SwarmCache

org.hibernate.cache.SwarmCacheProvider

集群

TreeCache

org.hibernate.cache.TreeCacheProvider

集群



不同类型的缓存均有其特性;

 

缓存服务

只读

读写

单读写

是否支持务

EHCache

OSCache

SwarmCache

TreeCache



根据我们的需要选择要用的Cache,当然我们也可以自己定义咯(这里不讲大家自己看书
P81页);下面给个例子

ehcache.xml

 
<!--声明使用EHCache缓存服务-->
<ehcache>
<!--设置磁盘存储的位置-->
<diskStore path="java.io.tmp"/>
<!--一般常规设置-->
<defaultCache
<!--内存保存缓存对象的个数-->
maxElementsInMemory="10"
<!--设置缓存对象是会过期的-->
eternal="false"
<!--对象的存活期-->
timeToIdleSeconds="120"
timeToLiveSeconds="120"
<!--超过maxElementsInMemory是否保存至diskStore中-->
overflowToDisk="true"/>

<!--为Event对象设置缓存,设置选项与上面对应-->
<cache name="com.manning.hq.ch03.Event"
maxElementsInMemory
="20"
eternal
="false"
timeToIdleSeconds
="120"
timeToLiveSeconds
="180"
overflowToDisk
="true"/>
</ehcache>


OK讲完咯,大家会觉得瞒乱滴,没关系下个文章,我将直接跳到一个Spring&Hibernate的

例子;通过简单实例了解Hibernate的使用。

后面还有个小节讲的是继承问题,这个大家都有接触过自己看看估计没问题!

到这里书中的基础部分内容OVER了,

接着这样安排大家自己把后面的HQL和Hibernate使用的细节看看;

谢谢大家的支持!!!!下个文见了,呵呵~~~~~~






地震让大伙知道:居安思危,才是生存之道。
posted on 2007-04-07 11:36 小寻 阅读(312) 评论(1)  编辑  收藏 所属分类: j2se/j2ee/j2me

FeedBack:
# re: Hibernate Quickly--读书笔记(3) [未登录] 2007-05-15 10:41 SDFSD
3TRWERE  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: