|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
团结兵种作战的凌乱
Spring笼统的DAO系统兼容多种数据会见手艺,它们各有特色,半斤八两。像Hibernate长短常优异的ORM完成计划,但对底层SQL的把持不太便利;而iBatis则经由过程模板化手艺让您便利地把持SQL,但没有Hibernate那样高的开辟效力;自由度最高确当然是间接利用SpringJDBC莫属了,可是它也是最底层的,天真的价值是代码的繁复。很难说哪一种数据会见手艺是最优异的,只要在某种特定的场景下,才干给出谜底。以是在一个使用中,常常接纳多个数据会见手艺:通常为两种,一种接纳ORM手艺框架,而另外一种接纳偏JDBC的底层手艺,二者珠联璧合,构成团结兵种,配合御敌。
可是,这类团结兵种怎样应对事件办理的成绩呢?我们晓得Spring为每种数据会见手艺供应了响应的事件管理器,岂非必要分离为它们设置对应的事件办理器吗?它们究竟是怎样合作,怎样事情的呢?这些层见叠出的成绩常常压抑了开辟职员利用团结兵种的设法。
实在,在这个成绩上,我们低估了Spring事件办理的才能。假如您接纳了一个高端ORM手艺(Hibernate,JPA,JDO),同时接纳一个JDBC手艺(SpringJDBC,iBatis),因为前者的会话(Session)是对后者毗连(Connection)的封装,Spring会“充足智能地”在统一个事件线程让前者的会话封装后者的毗连。以是,我们只需间接接纳前者的事件办理器就能够了。下表给出了夹杂数据会见手艺所对应的事件办理器:
表1.夹杂数据会见手艺的事件办理器
夹杂数据会见手艺事件办理器ORM技术框架JDBC手艺框架HibernateSpringJDBC或iBatisHibernateTransactionManagerJPASpringJDBC或iBatisJpaTransactionManagerJDOSpringJDBC或iBatisJdoTransactionManager因为一样平常不会呈现同时利用多个ORM框架的情形(如Hibernate+JPA),我们不拟对此命题睁开叙述,只重点研讨ORM框架+JDBC框架的情形。Hibernate+SpringJDBC多是被利用得最多的组合,上面我们经由过程实例察看事件办理的运作情形。
清单1.User.java:利用了注解声明的实体类
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Id;
import java.io.Serializable;
@Entity
@Table(name="T_USER")
public class User implements Serializable{
@Id
@Column(name = "USER_NAME")
private String userName;
private String password;
private int score;
@Column(name = "LAST_LOGON_TIME")
private long lastLogonTime = 0;
}
<p>
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。 |
|