dao问题

08-04-18 gmacjb

band大哥,小弟刚开始搞jsva;有一些问题一直搞不太清楚,我在做一个的web应用,在有些j2ee中dao接口,有些人在定义方法的时候是这么写的 int get(Session sess,int id);觉得这样很不合理,跟hibernate偶合了,改成这样 int (int id);在取得Session后进行数据操作在dao里面用SessionFactory.getCurrentSession();得到session;
在Service里面打开Session,sessionFactory.openSession(); 调用dao.(int id);关闭提交都在service里面,总是出现错误;提示没有当前线程的session;这样对吗?
[该贴被gmacjb于2008-04-18 18:06修改过]

banq
2008-04-19 08:43

当然不能将Dao和Hibernate耦合,Session其实就类似JDBC的Connection,需要及时关闭或打开,不要在DAO以外操作Connection,使用Hibernate最好结合Spring的OpenSessionInView或Jdon得CloseSessionInView来做,也就是最好用Spring+Hibernate或Jdon+Hbernate组合。

gmacjb
2008-05-05 15:54

如果DAO层不处理事物,要在业务层来处理事物,哪dao层就不能打开session,要在业务层打开session处理事物,这样的话是不是要使用代理模式来处理;