首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

深思spring:由Ruby on Rails想到的

2012-10-31 
反思spring:由Ruby on Rails想到的[size11]众所周知,RoR里面的指导原则有:第一条是较小的软件,这意味着你

反思spring:由Ruby on Rails想到的
[size=11]
众所周知,RoR里面的指导原则有:
第一条是较小的软件,这意味着你编写较少的程序行。程序小就能加速开发,错误也较少,使得程序较容易理解、维护和增强。对编写较小程序做出贡献的Ruby的一个特性就是它假设该架构本身能够并应该处理元数据.
第二条是对配置的协定原理,这意味着Rails不用配置文件,而是依靠一些简单的编程协定,让它通过利用应用程序已有的信息和在运行的数据库,解决它需要知道什么这个问题。
Spring一个非常灵活的一个框架,灵活的同时也造成了一定的复杂性。我个人眼中的spring应该从RoR学到的东西应该有:不用写一行xml语句就可以配置好AOP常规的事务管理,约定高于配置。
当前spring支持的事务管理配置,大体有以下两种配置方式,为了方便举例子,所以借用了javaEE技术专家"江南白衣"的两段代码

(1)、spring2.0版本支持的事务管理

package org.appfuse.dao.hibernate;import java.util.List;import org.appfuse.dao.UserDAO;import org.appfuse.model.User;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;[color=blue]//假设有下面这一个类import org.springframework.orm.hibernate3.support.annotations.TransactionAop;[/color][color=blue]@TransactionAop(hibernate3)[/color]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,所以我提出上面所述的一点假想,可以简便开发。
简单就是美。
      这是昨晚写了一个小时多一点的文章,现在发上博客,哈哈........
[/size] 1 楼 robbin 2006-10-23   spring2.0支持你说的@Transactional的annotation,不过事务这种全局性配置用annotation未必方便。

Java的哲学和ruby on rails所得哲学不太一样,这是造成两者差异的主要原因。

不过你的文章很棒 2 楼 robbin 2006-10-23   可以考虑发布到论坛去 3 楼 lighter 2006-10-23   "spring2.0支持你说的@Transactional的annotation,不过事务这种全局性配置用annotation未必方便。"
看来自己要补上spring2.0一些新内容.惭愧惭愧......

热点排行