spring ejb3 jta 事务泛谈
其实我很早就用过spring,当时抱着in action看了好几遍,但是一直没有怎么用。时不时忘记了又跑回去看,我看别人蛮喜欢用spring,但是我就是不喜欢用,主要是我不喜欢xml配置。连hibenate的配置我都不喜欢。
今天回忆一下spring,拿官方指定的文档来说吧.
spring:
http://www.theserverside.com/news/1364527/Introduction-to-the-Spring-Framework [作者是spring的作者]
spring的目的主要是简化j2ee的运用,使用一种pojo的无侵入的编程风格。它整合各种开源框架,是种方便的胶水,也是使用灵活的骨架。
它有以下几个主要方面的功能:
反转控制IOC:
面向接口的编程,松耦合。--不过这也带来了讨厌的配置
jdbc抽象:
jdbc模板
ORM框架整合:
hibernate,ibatis……
面向方面的编程AOP:
由动态代理和cglib实现,提供事务抽象。这个吵得蛮厉害,而我又用的很少,所以不多说。
spring MVC web:
参见http://blog.ureshika.com/archives/435.html
实现和使用EJB:
这似乎对ejb2来说的,
使用proxy来包装无状态bean和客户端,得到pojo的便利。加上springbean的便利,可以减少EJB使用的复杂度。
测试:
有spring特点的测试(回滚……)。
事务:
我再谈谈事务,spring里面提供对事务的抽象,其底层可以使用JTA, JDBC, Hibernate, JPA, 和 JDO。这里要搞清楚事务这个概念,在目前java里面,事务还是针对关系数据库据持久化来说的,大部分nosql是不支持事务的,也和jdbc没关系。spring的事物抽象最终是反映到关系数据库上来。
ejb3:
ejb3默认使用容器管理事务CMT,策略为REQUIRED。即每个远程方法必须一个事务。遇到异常会回滚事务,但是@ApplicationException(rollback=false)时则不会回滚。