spring事务一为"声明式,一为"可编程式",
1,可编程式:
TransactionTemplate,HibernateTemplate,JdbcTemplate为编程式,
在我做项目时,Hibenrate常用Dao extends HibernateDaoSupport;
Jdbc常在jdbcDao层把jdbcTemplate注入进去,
这样访问数据库时,会自动打开Session,开启事务.
public class SysUserDAO extends HibernateDaoSupport {
public List findByUserId(Integer userId){
HibernateTemplate ht = getHibernateTemplate();
ht.setCacheQueries(true);
StringBuffer hql = new StringBuffer(" from SysUser su where 1=1 and su.userId="+userId);
List list = ht.find(hql.toString());
return list;
}
public void save(SysUser transientInstance) {
log.debug("saving SysUser instance");
try {
getHibernateTemplate().saveOrUpdate(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
}
public class JdbcSysUserDAO {
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate nanguajdbcTemplate) {
this.jdbcTemplate = nanguajdbcTemplate;
}
}
配置文件:
spring.xml
<bean id="dataSourc" .../>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
spring-dao.xml
<bean id="sysUserDao" class=..>
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="jdbcSysUserDao class=..>
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
分享到:
相关推荐
在深入理解`spring-cglib-repack-3.2.4.jar`和`spring-objenesis-repack-2.5.1.jar`这两个jar包之前,我们先来了解一下Spring框架的核心概念。 Spring框架的核心包括依赖注入(Dependency Injection,DI)和面向切...
本实例将深入探讨Spring事务管理的实现与应用。 首先,Spring事务管理分为编程式事务管理和声明式事务管理两种方式。编程式事务管理是通过调用TransactionTemplate或直接使用PlatformTransactionManager接口来控制...
总的来说,`spring-cglib-repack-3.2.0.jar`和`spring-objenesis-repack-2.1.jar`是Spring框架正常运行的关键组成部分,它们分别负责动态子类生成和无参构造函数对象的快速实例化,对于理解和优化Spring应用的性能有...
1. **Core Container**:这是Spring的基础,包括Core和Beans模块,它们提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的基础。Core模块提供了ApplicationContext...
例如,Spring的事务管理、缓存管理和性能监控等功能,都可能依赖于CGlib动态代理。`repack`通常意味着这个库已经被重新打包,可能包含了特定的修改或优化,以便更好地与其他组件集成。 其次,`spring-objenesis-...
总之,这个“spring简单实例 事务回滚”案例为我们提供了一个学习Spring事务管理的好起点。通过理解如何配置事务管理器,使用`@Transactional`注解,以及异常处理机制,我们可以更好地掌握Spring如何保证数据的一致...
标题中的"spring-cglib-repack-3.2.5.jar"和"spring-objenesis-repack-2.6.jar"是Spring框架在运行时依赖的两个关键库,它们主要涉及到动态代理和对象创建的优化。 1. **CGLIB(Code Generation Library)**: ...
1. 下载`spring-cglib-repack-3.2.4.jar`和`spring-objenesis-repack-2.4.jar`,通常可以在Maven中央仓库或者GitHub上找到对应版本的文件。 2. 将这两个jar包添加到你的项目的`lib`目录下,或者如果你使用的是Maven...
在Spring框架的开发和调试过程中,我们经常需要深入源码以理解其工作原理或解决特定问题。然而,直接编译Spring源码时,可能会遇到依赖缺失的问题。在本案例中,"Spring源码编译缺少的两个包:spring-cglib-repack-...
Struts、Spring和Hibernate是Java开发中非常重要的三个框架,它们分别在MVC(Model-View-Controller)架构的不同层面发挥作用。Struts处理用户请求,Spring管理应用的业务逻辑和依赖,而Hibernate则负责数据库操作。...
标题中的"spring-cglib-repack-3.2.5.jar"和"spring-objenesis-repack-2.6.jar"是两个与Spring框架相关的库文件,它们主要用于Spring框架的内部实现,尤其是针对Java对象的创建和代理机制。下面将详细解释这两个库的...
在3.0.x系列中,Spring提供了对Struts 1.x的支持,允许开发者利用Spring的特性来增强Struts应用,例如事务管理、AOP(面向切面编程)、数据绑定和类型转换等。 1. **Spring与Struts的整合机制** Spring与Struts的...
6. **spring-test-3.2.0.RELEASE.jar**:测试模块提供了对JUnit和TestNG的支持,使得在Spring环境中进行单元测试和集成测试变得简单。它包含`@ContextConfiguration`等注解,用于加载和配置测试用例中的...
Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...
本文将深入探讨基于Spring Cloud Eureka、Feign、MyBatis和Seata的分布式事务解决方案,帮助开发者理解如何在微服务架构中实现高效、可靠的事务管理。 首先,Spring Cloud Eureka是Netflix公司提供的一个服务注册与...
在"spring-mybatis-struts2-master"项目中,可以看到Spring的配置文件(如:applicationContext.xml),其中定义了Bean的实例化规则,包括数据库连接池、SqlSessionFactory等关键组件。 二、MyBatis框架 MyBatis是...
7. **事务管理**: Spring提供了一套完善的事务管理机制,包括编程式事务管理和声明式事务管理。在Spring-Hibernate集成中,通常使用声明式事务管理,通过@Transactional注解来控制事务的边界。 8. **单元测试和整合...
总结一下,`Spring Hibernate事务实例`涵盖了以下核心知识点: 1. Spring框架的声明式事务管理:通过`TransactionInterceptor`和`@Transactional`注解实现。 2. Hibernate事务管理:使用`...
在不使用这个库的情况下,开发者需要手动管理SqlSessionFactory或SqlSession,并确保它们在Spring事务边界内正确关闭。而MyBatis-Spring通过提供SqlSessionTemplate和SqlSessionDaoSupport等工具类,使得MyBatis可以...
1. **Objenesis**: `spring-objenesis-repack-2.1.jar` 是Objenesis库的一个打包版本,Objenesis是一个轻量级Java库,主要用于实例化未经构造函数创建的对象。在Spring框架中,Objenesis主要用来处理那些没有默认...