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方式的才能支持事务。
分享到:
相关推荐
本示例主要介绍如何实现Spring Boot 2.0多数据源的集成,并结合Hibernate进行配置,特别是在DAO层使用`HibernateDaoSupport`进行操作,而非使用JPA(Java Persistence API)。 首先,让我们了解Spring Boot 2.0的...
在`applicationContext.xml`中配置Hibernate的DAO层,使用Spring的`HibernateTemplate`或`HibernateDaoSupport`。例如: ```xml ``` 在DAO实现类中注入SessionFactory,并使用`HibernateTemplate`进行数据库操作...
通过这样的整合,Spring负责管理事务和对象生命周期,而Hibernate负责数据库操作,c3p0则在二者之间提供高效的数据源管理,形成一个强大的Java企业级应用开发框架。这个过程不仅简化了代码,还提高了系统的稳定性...
整合过程中,我们需要创建一个Spring的配置文件,定义数据源、SessionFactory、HibernateTemplate或HibernateDaoSupport,以及事务管理器。这些配置将连接到数据库,并设置事务策略。 例如,对于数据源,我们可以...
但在Spring中,我们可以利用Spring的`LocalSessionFactoryBean`替代`hibernate.cfg.xml`,将Hibernate的配置信息整合到Spring的配置文件中,这样可以更好地实现依赖注入和管理。 1. **Spring配置Hibernate** - 在...
3. **配置Hibernate**: 在`pom.xml`中添加JPA的依赖后,Spring Boot默认会自动配置Hibernate。你还可以在`application.properties`中设置Hibernate的属性,如秀实体扫描路径、生成DDL、方言等。 ```properties ...
### Spring与Hibernate整合详解 在Java企业级应用开发中,Spring框架与Hibernate是两个非常重要的技术组件。Spring作为一款轻量级的控制反转(Inversion of Control,IoC)容器和面向切面编程(Aspect Oriented ...
- **Spring配置**:创建Spring的配置文件(如`applicationContext.xml`),配置DataSource、SessionFactory、HibernateTemplate或HibernateDaoSupport,以及Spring MVC的相关配置,如DispatcherServlet、...
- Spring通过其`HibernateTemplate`或`HibernateDaoSupport`类简化了对Hibernate的操作,提供了事务管理。你可以定义一个Hibernate配置文件,其中包含数据源、SessionFactory等信息。 - 使用Spring的`...
- **数据源配置**:在Spring中配置数据源,如DataSource,与Hibernate整合时,该数据源将被用于SessionFactory的构建。 - **Action与Service的交互**:Struts2的Action可以直接注入Spring管理的Service接口,通过...
5. **整合数据访问层**:使用 Spring 的 `HibernateTemplate` 或 `HibernateDaoSupport` 进行数据操作,或者采用基于注解的 JPA(Java Persistence API)方式。 这个资源提供的图片参考很可能包含了整合过程的示例...
整合Spring和Hibernate时,通常会通过Spring的DataSource、SessionFactory和HibernateTemplate或HibernateDaoSupport来管理数据库连接和事务。Spring通过AOP在数据库操作周围创建事务边界,保证了数据的一致性。同时...
在IT行业中,Spring和Hibernate是两个...综上所述,Spring和Hibernate的整合涉及到Bean管理、数据源配置、SessionFactory创建、事务管理等多个方面,通过理解和实践这些知识点,开发者可以构建出健壮的Java企业级应用。
整合过程中,我们通常会配置Spring的XML配置文件来定义数据源、SessionFactory、事务管理器等,并使用Hibernate的SessionFactory来创建和管理Session。同时,通过Spring的声明式事务管理,可以在不侵入业务代码的...
Spring的HibernateTemplate或HibernateDaoSupport类可以帮助我们更轻松地集成Hibernate,提供事务边界并处理异常。此外,Spring的JdbcTemplate和NamedParameterJdbcTemplate也可以与Hibernate一起使用,为数据库操作...
以上就是关于Spring与Hibernate集成的关键知识点,包括基本配置、HibernateDaoSupport与UserDaoHibernateImpl的区别,以及Spring+Struts+Hibernate集成的具体实现细节。这些内容有助于更好地理解和运用Spring框架与...
SSH整合是Java Web开发中常见的技术栈组合,主要包括Struts2、Hibernate和Spring三大框架。在实际项目中,为了提高代码的可维护性和解耦,通常会将Hibernate的配置交给Spring来管理。这种方式有助于实现数据访问层...
Struts+Spring+Hibernate(SSH)是一个经典的Java企业级应用开发框架组合,它结合了Struts的MVC架构、Spring的依赖注入与事务管理以及Hibernate的对象关系映射能力。这篇配置文档详细指导了如何在MyEclipse环境中...
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用上下文管理和对象关系映射...学习和理解这份配置文件,对于深入理解Spring如何与数据库交互,以及如何进行Spring与Hibernate的整合会非常有帮助。
Spring Boot以其便捷的自动配置和简化Java应用开发而广受欢迎,而Hibernate作为Java领域中强大的对象关系映射工具,能够帮助我们高效地处理数据库操作。下面我们将详细介绍这个集成过程,以及在DAO层如何利用...