`

spring hibernate mysql整合 配置事务(HibernateDaoSupport)

阅读更多

Spring.xml

ITestDao.java

TestDaoImpl.java

DomainObject.java

Client.java

 

 

===============Spring.xml===============

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
		   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">


	<bean id="placeHolder"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
		p:locations="classpath:jdbc.properties" />

	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName"
			value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="annotatedClasses">
			<list>
				<value>
					com.spring.ch11.dao.hibernate.daosupport.DomainObject
				</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQL5InnoDBDialect
				</prop>
			</props>
		</property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />

	<bean id="com.spring.ch11.dao.hibernate.daosupport.TestDaoImpl"
		class="com.spring.ch11.dao.hibernate.daosupport.TestDaoImpl"
		p:sessionFactory-ref="sessionFactory">
	</bean>

</beans>

 

 

===============ITestDao.java===============

package com.spring.ch11.dao.hibernate.daosupport;

import java.util.List;

import org.hibernate.HibernateException;
import org.springframework.transaction.annotation.Transactional;

public interface ITestDao {
	public List<DomainObject> getAll();
	public DomainObject getByIdWithQuery(int id);
	public DomainObject getByIdWithSession(int id);
	@Transactional(rollbackFor = HibernateException.class, noRollbackFor = Throwable.class)
	public void save(DomainObject domainObject);
}

 

 

 

===============TestDaoImpl.java===============

 

package com.spring.ch11.dao.hibernate.daosupport;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class TestDaoImpl extends HibernateDaoSupport implements ITestDao {

	public List<DomainObject> getAll() {
		return getSession().createQuery("from DomainObject").list();
	}

	@Override
	public DomainObject getByIdWithQuery(int id) {
		return (DomainObject) getHibernateTemplate().find(
				"from DomainObject d where d.id = " + id).get(0);
	}

	@Override
	public DomainObject getByIdWithSession(int id) {
		Session session = getSession();
		try {
			return (DomainObject) session.createQuery(
					"from DomainObject d where d.id = " + id).uniqueResult();
		} catch (HibernateException e) {
			throw convertHibernateAccessException(e);
		}
	}

	@Override
	public void save(DomainObject domainObject) {
		getSession().save(domainObject);
	}

}

 

 

===============DomainObject.java===============

 

package com.spring.ch11.dao.hibernate.daosupport;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "demo")
public class DomainObject implements Serializable {
	private int id;
	private float unitPrice;
	private String name;

	@Id
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public float getUnitPrice() {
		return unitPrice;
	}

	public void setUnitPrice(float unitPrice) {
		this.unitPrice = unitPrice;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

 

 

 

===============Client.java===============

 

package com.spring.ch11.dao.hibernate.daosupport;

import java.util.Random;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"spring.xml", Client.class);
		ITestDao testBean = (ITestDao) context.getBean(TestDaoImpl.class
				.getName());


		DomainObject domainObject = new DomainObject();
		domainObject.setId(new Random().nextInt(10000));
		domainObject.setName("name" + domainObject.getId());
		domainObject.setUnitPrice(10.23f);
		System.out.println(ToStringBuilder.reflectionToString(domainObject));
		
		testBean.save(domainObject);
		
		System.out.println(testBean.getAll().size());
	}
}

 

另外mysql的数据库一定要是Innodb方式的才能支持事务。

分享到:
评论

相关推荐

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    本示例主要介绍如何实现Spring Boot 2.0多数据源的集成,并结合Hibernate进行配置,特别是在DAO层使用`HibernateDaoSupport`进行操作,而非使用JPA(Java Persistence API)。 首先,让我们了解Spring Boot 2.0的...

    使用MyEclipse下整合Spring和Hibernate

    在`applicationContext.xml`中配置Hibernate的DAO层,使用Spring的`HibernateTemplate`或`HibernateDaoSupport`。例如: ```xml ``` 在DAO实现类中注入SessionFactory,并使用`HibernateTemplate`进行数据库操作...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    通过这样的整合,Spring负责管理事务和对象生命周期,而Hibernate负责数据库操作,c3p0则在二者之间提供高效的数据源管理,形成一个强大的Java企业级应用开发框架。这个过程不仅简化了代码,还提高了系统的稳定性...

    SpringMVC与Hibernate整合所需jar

    整合过程中,我们需要创建一个Spring的配置文件,定义数据源、SessionFactory、HibernateTemplate或HibernateDaoSupport,以及事务管理器。这些配置将连接到数据库,并设置事务策略。 例如,对于数据源,我们可以...

    JavaEE spring和Hibernate整合(没有hibernate.cfg.xml)

    但在Spring中,我们可以利用Spring的`LocalSessionFactoryBean`替代`hibernate.cfg.xml`,将Hibernate的配置信息整合到Spring的配置文件中,这样可以更好地实现依赖注入和管理。 1. **Spring配置Hibernate** - 在...

    spring-boot 集成hibernate

    3. **配置Hibernate**: 在`pom.xml`中添加JPA的依赖后,Spring Boot默认会自动配置Hibernate。你还可以在`application.properties`中设置Hibernate的属性,如秀实体扫描路径、生成DDL、方言等。 ```properties ...

    Spring+Hibernate整合

    ### Spring与Hibernate整合详解 在Java企业级应用开发中,Spring框架与Hibernate是两个非常重要的技术组件。Spring作为一款轻量级的控制反转(Inversion of Control,IoC)容器和面向切面编程(Aspect Oriented ...

    springmvc整合hibernate所需jar包

    - **Spring配置**:创建Spring的配置文件(如`applicationContext.xml`),配置DataSource、SessionFactory、HibernateTemplate或HibernateDaoSupport,以及Spring MVC的相关配置,如DispatcherServlet、...

    使用spring整合hibernate和struts时所要用到的所有jar包

    - Spring通过其`HibernateTemplate`或`HibernateDaoSupport`类简化了对Hibernate的操作,提供了事务管理。你可以定义一个Hibernate配置文件,其中包含数据源、SessionFactory等信息。 - 使用Spring的`...

    strutsspringhibernate整合

    - **数据源配置**:在Spring中配置数据源,如DataSource,与Hibernate整合时,该数据源将被用于SessionFactory的构建。 - **Action与Service的交互**:Struts2的Action可以直接注入Spring管理的Service接口,通过...

    spring4与hibernate4.2整合全部jar包

    5. **整合数据访问层**:使用 Spring 的 `HibernateTemplate` 或 `HibernateDaoSupport` 进行数据操作,或者采用基于注解的 JPA(Java Persistence API)方式。 这个资源提供的图片参考很可能包含了整合过程的示例...

    spring整合hibernate的jar包

    整合Spring和Hibernate时,通常会通过Spring的DataSource、SessionFactory和HibernateTemplate或HibernateDaoSupport来管理数据库连接和事务。Spring通过AOP在数据库操作周围创建事务边界,保证了数据的一致性。同时...

    Spring和Hibernate的整合

    在IT行业中,Spring和Hibernate是两个...综上所述,Spring和Hibernate的整合涉及到Bean管理、数据源配置、SessionFactory创建、事务管理等多个方面,通过理解和实践这些知识点,开发者可以构建出健壮的Java企业级应用。

    整合Spring + hibernate所需的jar包

    整合过程中,我们通常会配置Spring的XML配置文件来定义数据源、SessionFactory、事务管理器等,并使用Hibernate的SessionFactory来创建和管理Session。同时,通过Spring的声明式事务管理,可以在不侵入业务代码的...

    Spring Hibernate实例.rar

    Spring的HibernateTemplate或HibernateDaoSupport类可以帮助我们更轻松地集成Hibernate,提供事务边界并处理异常。此外,Spring的JdbcTemplate和NamedParameterJdbcTemplate也可以与Hibernate一起使用,为数据库操作...

    spring 理解文件HibernateDaoSupport

    以上就是关于Spring与Hibernate集成的关键知识点,包括基本配置、HibernateDaoSupport与UserDaoHibernateImpl的区别,以及Spring+Struts+Hibernate集成的具体实现细节。这些内容有助于更好地理解和运用Spring框架与...

    SSH整合方式二:将hibernate的配置交给Spring管理

    SSH整合是Java Web开发中常见的技术栈组合,主要包括Struts2、Hibernate和Spring三大框架。在实际项目中,为了提高代码的可维护性和解耦,通常会将Hibernate的配置交给Spring来管理。这种方式有助于实现数据访问层...

    Struts+Spring+Hibernate框架配置文档

    Struts+Spring+Hibernate(SSH)是一个经典的Java企业级应用开发框架组合,它结合了Struts的MVC架构、Spring的依赖注入与事务管理以及Hibernate的对象关系映射能力。这篇配置文档详细指导了如何在MyEclipse环境中...

    关于spring +hibernate整合的报告!!

    在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用上下文管理和对象关系映射...学习和理解这份配置文件,对于深入理解Spring如何与数据库交互,以及如何进行Spring与Hibernate的整合会非常有帮助。

    springboot集成hibernate

    Spring Boot以其便捷的自动配置和简化Java应用开发而广受欢迎,而Hibernate作为Java领域中强大的对象关系映射工具,能够帮助我们高效地处理数据库操作。下面我们将详细介绍这个集成过程,以及在DAO层如何利用...

Global site tag (gtag.js) - Google Analytics