该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-02
用ServletFilter来处理SessionFactory的初始化和Session的关闭是不是会稍微增加WEB层和持久层的一些耦合度?能不能在DAO那一层就实现seesion-per-request呢?大家有什么别的解决方案吗?
我的一个想法: 写一个DAO的抽象类, 在其构造函数里初始化SessionFactory, 然后在finalize()里关闭session。 问题是finalize()是由JVM决定GarbageCollection时调用的, 这样如果用户很多的话岂不是要消耗很多的数据库连接? 另一个想法: 如果采用有SessionBean的架构“Struts + StatelessSessionBean + DAO + hibernate ”, 可不可以在SLSB的ejbCreate()里初始化SessionFactory, 然后在ejbRemove()里关掉session呢? 这同样会有前面一个想法的问题。可是虽然ejbRemove()同样由Container决定什么时候调用,但SLSB是有池的,用它来服务很多用户应该没问题。 大家是怎么看的? |
|
返回顶楼 | |
发表时间:2004-12-15
玩了一下,发现每二次后的请求Request上来会出错:net.sf.hibernate.HibernateException: Session is closed
|
|
返回顶楼 | |
发表时间:2005-01-18
请问在这里说的dao,请问你的dao是针对不同的持久还是针对不同的数据库呢?
这个要说清楚,不然会误道别人! |
|
返回顶楼 | |
发表时间:2005-01-18
楼上的朋友,我并没有其他的意思。我只是说这里毕竟有很多人以前做dao对是针对不同的数据库来考虑。而现在的dao是针对不同的持久来做。比如有hibernateDAO有jdoDAO等。我并没有其他意思!
|
|
返回顶楼 | |
发表时间:2005-01-18
用了Spring的HibernateDaoSupport和 JdoDaoSupport
看上去BaseDaoImpl的意义也不大了 |
|
返回顶楼 | |
发表时间:2006-08-06
xanada 写道 呵呵,这只不过是一个toy,目的是让后来人能看到一个完整的能run起来的例子而已。要说应用到实际里,该修正的地方还多呢。
anyway,谢谢提醒。 总感觉用完 Session不关闭,在Fileter里面关不可靠(万一关闭的时候出现异常怎麽办?),而且Filter中关闭session的操作没有在finally里面,万一没有关闭成功,又会报 session was never closed after transaction .... 用 Hibernate 最怕看到这个信息了 |
|
返回顶楼 | |