您的位置:首页 > 编程语言 > Java开发

Spring整合JDBC、Spring的AOP事务开发、Spring注解整理

2017-03-28 00:00 162 查看

Spring整合JDBC:

Spring提供了根据JDBC可以操作数据库的对象。该对象封装了JDBC的操作。同QueryRunner对象类似。

该对象:JDBCTemplate(JDBC模板对象)

Spring提供的持久层技术有:JDBC、Hibernate3.0、IBatis(MyBatis)、JPA,etc.

流程:

1. 导包:

4+2、spring-jdbc、spring-tx、数据库驱动、连接池、spring-test、spring-aop、junit4(后面的测试)。

2. 将写好的Dao实现类配置到Spring容器中





3. 即可简单测试SpringJDBC。

JDBCTemplate常用API:

jdbcTemplate.update(sql,params..) 增删改

jdbcTemplate.queryForObject(sql,rowMapper,params..) 将一行查询结果封装成对象

jdbcTemplate.queryForObject(sql,Class,params..) 将一个想要的结果,以指定类型返回

jdbcTemplate.query(sql,rowMapper,params..) 将多行结果分别封装到对象,并以List集合返回

JDBCDaoSupport类:(Dao继承)

JDBCDaoSupport可以帮助我们根据DataSource创建模板对象。

则依赖关系由 DataSource->JDBCTempalte->Dao,

变成 DataSource->Dao extends JDBCDaoSupport

此时配置:

将连接信息放置外部properties配置中:

1. 一般src目录下准备xx.properties文件

2. 读取该配置文件:

使用context的标签property-placeholder

location(属性)="classpath:配置文件全路径"

3. 在DataSource的配置中:





SpringAOP事务原理:

Spring提供接口:开启事务、提交事务、回滚事务方法。

平台事务管理器:PlatformTransactionManager

实际使用,根据选择的实现方式,配置不同的事务管理器的class

真正管理事务的对象:

DataSourceTransactionManager 使用SpringJDBC或iBatis进行持久化数据时

HibernateTransactionManager 使用Hibernate进行持久化时

事务属性:

事务隔离级别:

是否只读:

事务传播行为:

为xxx异常回滚

不为xxx异常回滚

事务隔离级别:即数据库的4个级别,1248(一个二进制字节表示)

是否只读:true/false

传播行为:在业务方法平行调用时,指定事务如何处理的属性。

PROPAGATION_REQUIRED(默认):支持当前事务,没有则新建一个事务。保证业务处在事务控制下。

……

SpringAOP事务流程(XML):

1. 导包

4+2、spring-jdbc、spring-tx、数据库驱动、c3p0连接池、spring-aop、spring-aspects、aop联盟、 aspectJ织入、spring-test、junit4

2. 准备Dao:准备实际操作数据库的Dao

3. 准备Service:事务内的业务操作。

4. Spring配置注入:





5. 配置事务管理器:





6. 配置事务通知:

先引入tx命名空间,tx(事务)约束。Spring解压目录下





7. 配置织入





8. 测试:以Spring整合的Junit4、定义私有的属性Service对象来测试。

SpringAOP事务流程(注解):

1-5步,同上。

6. 开启注解管理事务"开关"

tx约束的annotation-driven标签,

transaction-manager(属性)="第5步配置的事务管理器的name"

7. 在Service中书写注解 来管理事务









8. 测试:

Spring注解整理:

注解注册Bean:

1. 开启:

打开注解开关:

context约束的component-scan,base-package(属性)="包名",表示该包下所有子包中类的注解

2. 注解:

类上:@Component、@Controller、@Service、@Repository,表示作用域@Scope

方法上:初始化@PostConstruct,销毁@PreDestroy

属性值类型注入:@Value

属性引用类型注入:@Autowired、@Qualifier、@Resource(name="Bean中的name")

Spring整合Junit4测试:

1. 不需要"开关"配置,导包即可

2. @RunWith(SpringJunit4ClassRunner.class)、@ContextConfiguration("classpath:配置文件路 径")、@Resource、@Test

Spring中的AOP开发(主要给下面的AOP事务铺垫):

1. 开启

aop约束的aspectJ-autoproxy标签

2. 注解:

类上:@Aspect

方法:@Before、@Around、@After-Returning、@After、@After-Throwing

抽取切点表达式:@PointCut(execution(* xxx.xxx.*xxx.*(..)))

Spring中的AOP事务:

1. 开启:

tx约束的annotation-driven标签,transaction-manager(属性)="transactionManager"

2. 注解:

类上或方法上:@Transactional(isolation=Isolation.REPEATABLE_READ,

readOnly=true,propagation=Propagation.REQUIRED)

待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaee spring ssh 框架