BO,DAO如何来分层清晰以及Session何处关闭的问题

我的BaseDAO如下:

java 代码
  1. public class BaseDAO<t></t>   
  2. {   
  3.        
  4.     Session session;   
  5.            
  6.        
  7.     /**  
  8.      * @author   insKy  
  9.      * @time     2007-6-17  下午03:06:17  
  10.      * @version  1.0  
  11.      * @param t  
  12.      */  
  13.        
  14.   
  15.         public void create (T t) {   
  16.          try {   
  17.              session = SessionFactory.getSession();   
  18.              Transaction tx = session.beginTransaction();   
  19.                          session.save( t );   
  20.   
  21.              session.flush();   
  22.              tx.commit();   
  23.                     }catch(HibernateException e){   
  24.                 throw e;   
  25.             }finally{   
  26.           }   
  27.     }   
  28.     //update delete操作类似 此处代码略     
  29.     public void update (T t)   
  30.     public void delete(T t)   
  31. }  

 

其余Dao继承这个BaseDAO:

java 代码
  1. public class ColumnsDAO extends BaseDAO{   
  2.        
  3. //某些操作。。。  此处不显式调用父类的creat函数   
  4. }  
ColumnsAction中调用ColumnsDAO的create函数完成增加操作
  
然而Dao中出现事务操作是不合适的,所以这里想分出BO层处理session以及事务的处理,修改完后的BaseBO应该大体如下:
java 代码
  1. public void create (T t) {   
  2.          try {   
  3.              session.save( t );   
  4.               }catch(HibernateException e){   
  5.                 throw e;   
  6.             }finally{   
  7.           }   
  8.     }  

我的问题是

1,对应的BO应该如何处理?BaseDAO中的session应该如何获取?BO中如何传递过来?(没用Spring之用到Struts+Hibernate)session的获取是SessionFactory通过ThreadLocal获取的
//看了别人的程序,感觉如果用Spring来管理,不会遇到这些问题,这里没用Spring改如何来最好的管理session的传递?

2,是否也应该写一个BaseBO来对应处理BaseDAO中的各个操作以避免每个BO中处理crud操作?
请各位指教

你可能感兴趣的:(DAO,spring,Hibernate,项目管理,ejb)