反思Spring:由Ruby on Rails想到的[2]

 我来答
华源网络
2022-11-14 · TA获得超过5671个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:158万
展开全部

  上面的二段配置文件代码是常用的spring事务管理配置

  看完上面的二段代码的配置 和Ruby on Rails没有一行配置的ActiveRecord相比差太远 相对麻烦拖拉 没有办法 暂时spring实现中事务管理主要也只是这两种方法

  使用spring通常会与hibernate/ibatis集成作数据访问层 这也是大多java开发人员常用字的技术框架 下面如spring和hibernate结合做数据访问层 暂时不讨论有泛型存在的情况 只是简单举一个例子把事务管理放在数据访问层 下面说出我自己心中理想的spring事务管理

  约定高于配置 首先规定 对于query list show get find等开头的方法采用PROPAGATION_REQUIRED readOnly级的事务定义 而对于set save update remove delete等开头的方法采用PROPAGATION_REQUIRED级的事务定义 基本上能满足大部分开发的需要 然后只要在需要事务管理配置的类的前加一句元数据即可 例如spring针对hibernate 开发的@TransactionAop(hibernate ) 类似的有@TransactionAop(hibernate ) @TransactionAop(ibatis) @TransactionAop(jdo)之类元数据的

  举一个例子看一段代码 其中UserDAO是一个接口 大家都应该看得出来 只加了一行的元数据@TransactionAop(hibernate )就可以使得这一个UserDAHibernate类有事务管理的功能 因为它命名的方法符合spring的约定 (当然 这不是真的 spring中也没有这一个功能 这只是我个人一点想法提出来而已)

  代码

package appfuse dao hibernate;

import java util List; import appfuse dao UserDAO; import appfuse model User; import springframework orm hibernate support HibernateDaoSupport; span style= color:blue; > //假设有下面这一个类 import springframework orm hibernate support annotations TransactionAop; </span>

<span style= color:blue; >@TransactionAop(hibernate )</span> public class UserDAOHibernate extends HibernateDaoSupport implements UserDAO {

public User getUser(Long userId) { return (User)this getHibernateTemplate() get(User class userId); }

public List getUsers() { return this getHibernateTemplate() find( from User ); }

public void removeUser(Long userId) { Object user = this getHibernateTemplate() load(User class userId); this getHibernateTemplate() delete(user); } public void saveUser(User user) { this getHibernateTemplate() saveOrUpdate(user); } }

  spring的事务定义很灵活很广 定义七种的传播行为和五种的隔离常量 但用得比较多还是PROPAGATION_REQUIRED和PROPAGATION_REQUIRED readOnly 所以我提出上面所述的一点假想 可以简便开发

  简单就是美

lishixinzhi/Article/program/Java/ky/201311/29082

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式