论坛首页 Java企业应用论坛

菜鸟请教业务层--事务控制

浏览 2269 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2007-08-28  
环境:struts +  hibernate

HibernateUtil创建管理Session

Filter 来实现关闭Session

/*
DAO 层
*/

public class UserDAOImpl implements IUserDAO {

private Session s;

public UserDaoImpl(){
this.s = HibernateUtil.getCurrentSession();
}
public void add(PoUser user){
this.session.save(user);
}

public void update(PoUser user){
this.session.save(user);
}
.
.
.
.
.
//
}


//那么我的业务层怎么实现控制事务呢

public class UserServiceImpl implements IUserService {

public addUser(UserDTO user){
//怎么控制事务呢?
//先看用户名是否重复,然后在添加
}

.
.
.
.
}

请指教。。谢谢各位大侠。。:(
   发表时间:2007-08-28  
事务处理一般靠现有的框架去做,比如Spring
我是这样写的:
java 代码
  1. public UserBO getUserByNameAndPwd(final String username, final String pwd) {   
  2.   return (UserBO) getHibernateTemplate().execute(new HibernateCallback() {   
  3.    public Object doInHibernate(Session session)   
  4.      throws HibernateException {   
  5.     Query query = session   
  6.       .createQuery("from UserBO u where u.userName=? and u.userPwd=?");   
  7.     query.setString(0, username);   
  8.     query.setString(1, pwd);   
  9.     UserBO index = (UserBO) query.uniqueResult();   
  10.     return index;   
  11.    }   
  12.   }, true);   
  13.  }  
xml 代码
  1. <bean id="GoodsDAO" class="com.maidong.mobile.goods.dao.GoodsDAOImpl"><!--注入sessionFactory-->  
  2.         <property name="sessionFactory">  
  3.             <ref local="sessionFactory"/>  
  4.         </property>  
  5.     </bean>  
  6.     <!--使用声明式事务管理代理DAO类,每一个DAO类都需配置一个代理-->  
  7.     <bean id="DAOProxy"  
  8.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  9.         <property name="transactionManager">  
  10.             <ref bean="transactionManager" />      
  11.         </property>  
  12.         <property name="target">  
  13.             <ref local="GoodsDAO" />  
  14.         </property>  
  15.         <property name="proxyTargetClass" value="true"/><!-- 使用CGlib -->  
  16.         <property name="transactionAttributes">  
  17.             <props>  
  18.                 <prop key="insert*">PROPAGATION_REQUIRED</prop>  
  19.                 <prop key="save*">PROPAGATION_REQUIRED</prop>  
  20.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
  21.             </props>  
  22.         </property>  
  23.     </bean>  
0 请登录后投票
   发表时间:2007-08-28  
但是如果说是不用Spring来管理事务的话,我该怎么实现呢 ?

我在网上看到一片文章,写道:
业务层应该不应该出现事务控制代码 这个问题已经在业界达成共识:业务层绝对不应该出现事务控制代码,严格的说不应该出现与业务无关的代码。

如果不用Spring的话,是不是就必须在业务层出现事务管理的代码呢 ?



0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics