关于对象的生命周期问题

11-06-04 xiaofancn
那论坛做例子:板块对象Form,文章对象Article。

我知道Hibernate中描述过对象的生命周期。在Hibernate中Session打开时,对象是活的,用Form对象就可以取出关联的Article对象,删除Form对象就可以删除关联的Article对象。

但是到了Tomcat中,我只知道application,Session,request,response,怎么让Form对象在request前和response后还活着呢?又怎么验证呢?这是不是所谓是对象生命呢?

另外再问一下,Hibernate中的Session和Spring中bean的生命在Jsp/Servlet容器中有事怎么表现的具体的用处(请举个具体的例子)。

[该贴被xiaofancn于2011-06-04 10:09修改过]

1
xiaofancn
2011-06-04 10:11
本人愚钝,还请各位高手能精简的回答。

banq
2011-06-07 10:00
每个框架或容器产品有自己的对象生命周期规则,比如JVM也有,包括其垃圾回收机制,tomcat也有,Hibernate也有,这些都是工具,这些工具不同的对象周期周期规则根据你的需要使用。就像大桶 小桶 方桶工具一样,根据你的需要来选择。

这个需要是你的业务需要,比如Form这个对象,它需要的生存空间(也就是对象生命周期或称Scope)是怎样,Forum的scope应该是与整个应用同生同死的,是当前应用的最长生命周期,那么使用Tomcat就应该将Form置于Application中,如果使用Hibernate,那么应该是在Application启动时,使用Hibernate来创建,因为Hibernate的Session是一种类似请求request的很短生命周期。

其他具体事例可参考网上相关源码。

xiaofancn
2011-06-07 21:54
解放思想,走出传统三层架构的束缚

领域对象的生命周期

我看了半天,说的是Form——领域对象的生命周期,我简单的提炼出了两个domin model,根据架构的思想,如果想让Form对象一直活着,存于缓存中。跨越整个request,response,session,appliaction周期。如果用spring对象池创建,需要打开hibernate的session,加载Form领域对象,然后保持一直打开,才可以永久在和整个Tomcat应用同生死。这个session不关闭不是有危险。不知道领域对象的生命周期是怎么生存的。还请banq指点。

{

hibernate中的实体应该就是我们所说的领域对象,让领域对象存活,不就保存session打开吗?OpenSessionInViewFilter在request和response中起效,领域对象怎么长期生存,又怎么存于缓存中呢?

}

[该贴被xiaofancn于2011-06-07 21:57修改过]

[该贴被xiaofancn于2011-06-07 22:19修改过]

banq
2011-06-08 08:19
2011年06月07日 21:54 "@xiaofancn"的内容
根据架构的思想,如果想让Form对象一直活着,存于缓存中。跨越整个request,response,session,appliaction周期 ...

见这篇文章:非推倒重来式的读/写伸缩扩展

使用IMDG数据网格来保存对象数据,JF框架可以使用Ehcache+terracotta或者hazelcast:hazelcast替代JF缺省的ehcache

猜你喜欢