spring入门实例-DAO,事务
实例:
配置文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.32.227:1521:orcl</value>
</property>
<property name="password">
<value>lpromis</value>
</property>
<property name="username">
<value>lpromis</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
</bean>
<bean id="userDAO"
class="com.myspring.bussiness.CustomerDAO">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="transactionManager">
<ref local="transactionManager"></ref>
</property>
</bean>
</beans>
实例中的事务使用的是DataSourceTransactionManager实现的,并且向其中注入了datasource
bean代码:
public class CustomerDAO
{
/**
* datasource
*/
private DataSource dataSource;
public void setDataSource(DataSource dataSource)
{
this.dataSource = dataSource;
}
public void setTransactionManager(PlatformTransactionManager transactionManager)
{
this.transactionManager = transactionManager;
}
/**
* 事务管理类,初始化已将datasource作为参数
*/
private PlatformTransactionManager transactionManager;
/**
* 普通使用事务的方法
* 定义事务
* 记录事务点
* 提交事务点/回滚事务点
*/
public void insertCustomer()
{
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try
{
JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname1')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname2')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025','testname3')");
transactionManager.commit(status);
}
catch (Exception e)
{
transactionManager.rollback(status);
System.out.println("*********roll back");
}
}
/**
* 事务模板,无返回值
*/
public void insertCustomerTamplate()
{
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallbackWithoutResult(){
@Override
protected void doInTransactionWithoutResult(TransactionStatus arg0)
{
// TODO Auto-generated method stub
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname4')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000024','testname5')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025,'testname6')");
}
});
}
/**
* 事务模板,带有返回值
*/
public void queryCustomerTamplate()
{
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
Object result = transactionTemplate.execute(
new TransactionCallback<Object>()
{
@Override
public Object doInTransaction(TransactionStatus arg0)
{
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname4')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000024','testname5')");
jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025','testname6')");
List<Map<String,Object>> rows = jdbcTemplate.queryForList("select eee from t_lpromis_yxgl_khxx");
return rows;
}
});
if(result instanceof List)
{
List re = (List) result;
for (int i = 0; i < re.size(); i++)
{
Map<String,Object> one = (Map<String, Object>) re.get(i);
System.out.println(one.get("id"));
}
}
}
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("com/myspring/bussiness/transactionManager.xml");
CustomerDAO cd = (CustomerDAO) context.getBean("userDAO");
cd.queryCustomerTamplate();
}
}
以上用
JdbcTemplate实现的jdbc的一系列操作,以及设置事务,其中的sql语句故意错误,验证事务rollback效果
分享到:
相关推荐
Spring-data-jpa 是 Spring 家族中的一个重要成员,它主要用于简化基于 Java Persistence API (JPA) 的数据访问层(DAO)的开发工作。JPA 作为 Java 平台的一种标准,旨在为 Java 应用程序提供一种通用的对象关系...
在`spring入门实例`中,你可能会看到如何使用`@Autowired`注解来自动装配数据源,以及如何通过`@Repository`注解创建DAO层的bean。 事务管理也是Spring的一大亮点。Spring支持编程式和声明式事务管理。声明式事务...
"dbApi-spring-boot-starter-demo-master"是一个完整的实例项目,它展示了如何集成和使用dbApi-spring-boot-starter。主要包含以下几个部分: 1. 主配置:分析项目的主配置文件,了解如何配置数据库连接以及启动器...
【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码...
在Spring入门阶段,首先要理解的是依赖注入(DI)。DI是一种设计模式,它允许我们解耦组件,让它们之间通过接口而非具体的实现进行交互。Spring通过容器管理对象的生命周期和依赖关系,我们只需要配置好bean的定义,...
这个入门实例通过实际操作,帮助初学者理解Struts2框架的运作方式,以及如何将它应用到实际的用户注册和登录功能中。通过学习和实践,开发者可以更好地掌握Java Web开发的基本技能,并为更复杂的项目打下坚实的基础...
容器管理事务是指由应用服务器或Spring容器本身管理事务,适用于那些不希望在业务逻辑中显式控制事务的场景。 ##### 4.3 编程式事务管理 对于需要更细粒度控制的场景,MyBatis-Spring提供了编程式事务管理的支持,...
下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...
在整合Spring时,Struts2可以利用Spring的依赖注入(DI)特性,将Service层对象注入到Action中,使得Action无需手动创建Service实例。 接下来,Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作。在本...
4. **Spring与MyBatis整合**:Spring MyBatis教程会讲解如何将Spring的依赖注入和事务管理与MyBatis的SQL映射相结合,实现更灵活的数据访问。这包括配置MyBatis的SqlSessionFactory,创建Mapper接口,以及使用`@...
### Spring入门教程知识点详解 #### 一、理论知识 ##### 1. 依赖注入与控制反转 - **依赖注入**(Dependency Injection, DI):在应用程序的运行期间,由外部容器(例如Spring容器)动态地将一个对象所依赖的其他...
3. **面向切面编程(Aspect-Oriented Programming, AOP)**:Spring提供了AOP支持,允许开发者将关注点(如日志、事务管理)与业务逻辑分离,实现代码的模块化和解耦。 4. **数据访问集成**:Spring支持多种数据库...
描述中提到的“添加用户实例”是Spring框架中一个常见的应用场景,通常涉及到数据持久化、事务管理和验证。在Spring 2.x中,我们可以使用Spring JDBC或Hibernate等ORM工具来与数据库交互,实现用户数据的增删改查。...
Spring框架覆盖了Java EE架构的每一层,主要包括web层的Spring MVC、Service层的Bean管理和声明式事务管理、以及DAO层的JDBC模板和ORM框架整合。通过Spring框架的应用,开发者可以使用其提供的各种功能模块和工具来...
通过使用Spring Data JPA,你可以避免编写大量的DAO(数据访问对象)和Repository代码,只需定义Repository接口,Spring Data JPA就会自动生成实现,包括CRUD操作。 2. **JPA简介** Java Persistence API(JPA)是...
【Struts2+Hibernate3.2+Spring2.0配置+入门实例】 本文将详细介绍如何配置和构建一个基于Struts2、Hibernate3.2和Spring2.0的企业级Java应用入门实例。首先,我们理解整体架构,这有助于我们更好地了解各个组件的...
结合spring struts hibernate dwr jstl做的实例,struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),Hibernate管理服务按...