论坛首页 Java企业应用论坛

有办法简化spring中的事务管理配置吗

浏览 45496 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-04-15  
lyz0726 写道
只要使用abstract就会报错

If you're using xmlbuddy,pls take a look at YOUR_WORKSPACE\.metadata\.plugins\com.objfac.xmleditor\.cache\meta.xml,then   will find the answer. Yes,old version spring dtd was cached.
0 请登录后投票
   发表时间:2005-04-24  
toney_kissinger 写道
看过之过大受启发。有一个疑问,每一个service  bean还是要作一次声明注册,能不能将所需的service bean统一放到一个list列表中,这样有每增加一个service bean时只需增加其中的一个元素,而不用再写一个完整的注册。


应该有这样的方式吧,这应该是需求中经常遇到的,应该有这个解决方法,目前好像只有用 proxyBean,比如 BeanNameAutoProxyCreator 才可以  :(
0 请登录后投票
   发表时间:2005-06-24  
我想问问de3light I'm impossible, Readonly, chinakite:

我现在就不知道这样配置后service的代码如何写请恕我问这个低级问题:

是应该这样写:

public void insertTest(); throws DataAccessException
{
	mTaskDAO.insertTableA();;
	mTaskDAO.insertTableB();;
}


还是应该这样写呢:
public void insertTest(); throws DataAccessException
{
	TransactionTemplate transTemplate = new TransactionTemplate(app.getTransactionManager(););;

	transTemplate.execute(new TransactionCallbackWithoutResult();
	{
		protected void doInTransactionWithoutResult(TransactionStatus status);
		{
			mTaskDAO.insertTableA();;
			mTaskDAO.insertTableB();;
		}
	});;
}
0 请登录后投票
   发表时间:2005-06-27  
按你第一种写法就可以了,顺便给出例子:
bean配置文件片段:
<bean id="baseTxProxy"
           lazy-init="true"
           class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref local="myTransactionManager" />
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="add*">PROPAGATION_REQUIRED,-DataAccessException</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly,-DataAccessException</prop>
                <prop key="update*">PROPAGATION_REQUIRED,-DataAccessException</prop>
                <prop key="delete*">PROPAGATION_REQUIRED,-DataAccessException</prop>
                <prop key="do*">PROPAGATION_REQUIRED,-DataAccessException</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly,-DataAccessException</prop>
            </props>
        </property>
    </bean>

<bean id="itemService" parent="baseTxProxy">
        <property name="target">
            <bean class="com.neusoft.percheron.middle.base.service.ItemServiceImpl">
                <property name="itemMasterDAO"><ref local="itemMasterDAO"/></property>
            </bean>
        </property>
    </bean>

<bean id="itemMasterDAO" class="com.neusoft.percheron.eis.dao.ItemMasterDAOImpl">
        <property name="sessionFactory"><ref local="mySessionFactory"/></property>
    </bean>

Java代码 - Service:
public class ItemServiceImpl extends BaseService implements ItemService {

    private ItemMasterDAO itemMasterDAO = null;

    public void setItemMasterDAO(ItemMasterDAO itemMasterDAO) {
        this.itemMasterDAO = itemMasterDAO;
    }

    /**
     * 取得一个商品的信息,如果数据库中无此商品则返回null.
     * @param itemcode 商品编号
     * @return 商品信息ItemMaster.
     * @throws DataAccessException
     */
    public ItemVO getItemMaster(String itemcode) throws DataAccessException {
        ItemMaster im = (ItemMaster)itemMasterDAO.getObject(ItemMaster.class,itemcode);
        ItemVO itemvo = new ItemVO();
        if(im != null){
            itemvo = new ItemVO();
            itemvo.setItemcode(im.getItemcode());
            itemvo.setItemdesc(im.getItemdesc());
        }else{
            itemvo = null;
        }
        return itemvo;
    }
}


这样就OK了,同时使用多个DAO中的方法时注意事务的策略
org.springframework.transaction.TransactionDefinition接口中有定义
0 请登录后投票
   发表时间:2005-07-05  
真是不错,以前还一纳闷着,今天终于解决了,谢谢啦!
0 请登录后投票
   发表时间:2005-09-06  
嗯,其实就是把事务从DAO层提升到Service层. 不错.
0 请登录后投票
   发表时间:2006-10-15  
我的baseTransactionProxy和业务service想配置在不同的xml文件里,这样直接指定parent="baseTransactionProxy"就会有问题,请问有办法吗
0 请登录后投票
   发表时间:2006-10-17  
JAVA_ED 写道
我的baseTransactionProxy和业务service想配置在不同的xml文件里,这样直接指定parent="baseTransactionProxy"就会有问题,请问有办法吗

有什么问题?我们就是这么做的,没有问题,你把遇到的问题详细地描述一下,包括抛出的异常等等
0 请登录后投票
论坛首页 Java企业应用版

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