Spring2.0中声明式事务管理(读<spring2.0技术手册>,林信良)<o:p></o:p>
<!---->1. <!---->在mysql中创建表user<o:p></o:p>
CREATE TABLE user (<o:p></o:p>
id INT(11) NOT NULL auto_increment PRIMARY KEY,<o:p></o:p>
name VARCHAR(100) NOT NULL default '',<o:p></o:p>
age INT<o:p></o:p>
) Type = InnoDB;<o:p></o:p>
<!---->2. <!---->编写userDAO<o:p></o:p>
public class UserDAO implements IUserDAO {<o:p></o:p>
private JdbcTemplate jdbcTemplate;<o:p></o:p>
<o:p></o:p>
public void setDataSource(DataSource dataSource) {<o:p></o:p>
jdbcTemplate = new JdbcTemplate(dataSource);<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void insert(User user) {<o:p></o:p>
String name = user.getName();<o:p></o:p>
int age = user.getAge().intValue();<o:p></o:p>
<o:p></o:p>
jdbcTemplate.update("INSERT INTO user (name,age) " <o:p></o:p>
+ "VALUES('" + name + "'," + age + ")");<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
public User find(Integer id) {<o:p></o:p>
List rows = jdbcTemplate.queryForList(<o:p></o:p>
"SELECT * FROM user WHERE id=" + id.intValue());<o:p></o:p>
<o:p></o:p>
Iterator it = rows.iterator();<o:p></o:p>
if(it.hasNext()) {<o:p></o:p>
Map userMap = (Map) it.next();<o:p></o:p>
<o:p> </o:p>
Integer i = new Integer(userMap.get("id").toString());<o:p></o:p>
String name = userMap.get("name").toString();<o:p></o:p>
Integer age = <o:p></o:p>
new Integer(userMap.get("age").toString());<o:p></o:p>
<o:p> </o:p>
User user = new User();<o:p></o:p>
user.setId(i);<o:p></o:p>
user.setName(name);<o:p></o:p>
user.setAge(age);<o:p></o:p>
<o:p></o:p>
return user;<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
return null;<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<!---->3. <!---->配置文件<o:p></o:p>
<?xml version="1.0" encoding="UTF-8"?> <o:p></o:p>
<beans xmlns="http://www.springframework.org/schema/beans"<o:p></o:p>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<o:p></o:p>
xmlns:aop="http://www.springframework.org/schema/aop"<o:p></o:p>
xmlns:tx="http://www.springframework.org/schema/tx"<o:p></o:p>
xsi:schemaLocation="http://www.springframework.org/schema/beans <o:p></o:p>
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<o:p></o:p>
http://www.springframework.org/schema/aop <o:p></o:p>
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd<o:p></o:p>
http://www.springframework.org/schema/tx <o:p></o:p>
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><o:p></o:p>
<o:p></o:p>
<bean id="dataSource" <o:p></o:p>
class="org.springframework.jdbc.datasource.DriverManagerDataSource"<o:p></o:p>
destroy-method="close"> <o:p></o:p>
<property name="driverClassName" <o:p></o:p>
value="com.mysql.jdbc.Driver"/> <o:p></o:p>
<property name="url"<o:p></o:p>
value="jdbc:mysql://localhost:3306/demo"/><o:p></o:p>
<property name="username" value="root"/> <o:p></o:p>
<property name="password" value="root"/> <o:p></o:p>
</bean> <o:p></o:p>
<o:p></o:p>
<bean id="transactionManager" <o:p></o:p>
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <o:p></o:p>
<property name="dataSource" ref="dataSource"/> <o:p></o:p>
</bean> <o:p></o:p>
<o:p></o:p>
<bean id="userDAO" <o:p></o:p>
class="onlyfun.caterpillar.UserDAO"><o:p></o:p>
<property name="dataSource" ref="dataSource"/><o:p></o:p>
</bean><o:p></o:p>
<o:p></o:p>
<tx:advice id="txAdvice" transaction-manager="transactionManager"><o:p></o:p>
<tx:attributes><o:p></o:p>
<tx:method name="insert*" propagation="REQUIRED"/><o:p></o:p>
<tx:method name="find*" read-only="true"/><o:p></o:p>
</tx:attributes><o:p></o:p>
</tx:advice><o:p></o:p>
<o:p></o:p>
<aop:config><o:p></o:p>
<aop:pointcut id="userDAOPointcut" <o:p></o:p>
expression="execution(* onlyfun.caterpillar.IUserDAO.*(..))"/> //前面*表示任意返回类型,后面表示onlyfun.caterpillar.IUserDAO中的所有方法。<o:p></o:p>
<aop:advisor advice-ref="txAdvice" pointcut-ref="userDAOPointcut"/><o:p></o:p>
</aop:config><o:p></o:p>
<o:p> </o:p>
</beans><o:p></o:p>
<!---->4. <!---->如果采用annotion 配置文件将会更简单:<o:p></o:p>
package onlyfun.caterpillar;<o:p></o:p>
<o:p> </o:p>
import java.util.Iterator;<o:p></o:p>
import java.util.List;<o:p></o:p>
import java.util.Map;<o:p></o:p>
<o:p> </o:p>
import javax.sql.DataSource;<o:p></o:p>
分享到:
相关推荐
4. **数据访问**:Spring 2.0增强了对JDBC、ORM框架(如Hibernate和iBatis)的支持,提供了声明式事务管理。书中将指导读者如何利用Spring进行数据库操作,以及如何实现事务管理。 5. **Spring与其他技术的集成**:...
《Spring 2.0 技术手册》是林信良先生撰写的一本关于Spring框架深入解析的著作,这本书详尽地介绍了Spring 2.0版本的相关技术和最佳实践。书中涵盖的内容广泛,包括了IoC(Inversion of Control,控制反转)、AOP...
- 提供了声明式事务管理和编程式事务管理。 - 支持AOP(面向切面编程),允许定义方法拦截器和切面,以便应用横切关注点,如安全性和事务管理。 - 引入Spring IoC(控制反转)容器,这是一个管理对象依赖关系的高级...
《Spring 2.0 技术手册》是林信良所著的一本经典Spring框架教程,虽然相较于当前的Spring版本(如Spring Boot、Spring Framework 5.x或6.x)有些许年代感,但它仍然是初学者了解Spring核心概念的宝贵资源。尽管技术...
《Spring 2.0 技术手册》是林信良撰写的一本关于Spring框架的权威指南,这本书深入探讨了Spring 2.0版本的核心特性和使用方法。Spring作为一款广泛应用于Java开发领域的轻量级框架,它极大地简化了企业级应用的开发...
- **事务管理**:Spring如何支持多种类型的事务管理机制,包括编程式事务管理和声明式事务管理。 综上所述,《spring2.0技术手册中文版》是一本全面介绍Spring框架基础知识、核心特性和实际应用场景的手册。通过...
3. **数据访问集成**:Spring 2.0提供了对多种数据访问技术的集成,包括JDBC、Hibernate、JDO和iBatis等,简化了数据库操作,并支持声明式事务管理。 4. **MVC(Model-View-Controller)框架**:Spring MVC是Spring...
《Spring 2.0 技术手册》是林信良先生撰写的一本深入解析Spring框架的经典著作,书中全面且深入地介绍了Spring 2.0版本的相关技术和最佳实践。随书附带的光盘资源,包括了多个章节的详细资料,便于读者更深入地理解...
《Spring技术手册》是由林信良编著的一本专注于Spring框架的权威指南,主要针对Spring 2.0版本。Spring框架是Java企业级应用开发中的重要工具,它以依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...
此外,Spring 2.0还加强了事务管理,提供了声明式事务处理,以及对JMS、EJB等企业级服务的全面支持。 学习这两个版本的文档可以帮助开发者了解Spring框架的历史演变,理解不同版本之间的差异,从而更好地适应项目...