http://feichen00.blog.sohu.com/91380336.html
利用spring提供的HibernateDaoSupport类来简化Hibernate的事务操作:
实体类:
package com.entity;
public class Person {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
DAO接口类:
package com.dao;
import com.entity.Person;
public interface PersonDao {
Person get(int id);
void save(Person person);
void update(Person person);
void delete(Person person);
}
DAO接口实现类:
package com.impl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dao.PersonDao;
import com.entity.Person;
public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {
@Override
public Person get(int id) {
return (Person)getHibernateTemplate().get(Person.class, new Integer(id));
}
@Override
public void save(Person person) {
getHibernateTemplate().save(person);
}
@Override
public void update(Person person) {
Person p = (Person)getHibernateTemplate().load(Person.class, new Integer(person.getId()));
getHibernateTemplate().update(person);
}
@Override
public void delete(Person person) {
Person p = (Person)getHibernateTemplate().load(Person.class, new Integer(person.getId()));
getHibernateTemplate().delete(p);
}
}
spring配置文件applicationContext.xml:
<?xml version="1.0" encoding="gb2312"?>
<!-- Spring配置文件的DTD定义 -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Spring配置文件的根元素是beans -->
<beans>
<!--定义数据源,该bean的ID为dataSource -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 指定数据库驱动 -->
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 指定连接数据库的URL -->
<property name="url">
<value>jdbc:mysql://localhost:3306/lee</value>
</property>
<!-- root为数据库的用户名 -->
<property name="username">
<value>root</value>
</property>
<!-- pass为数据库密码 -->
<property name="password">
<value>root</value>
</property>
</bean>
<!--定义Hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上文定义的dataSource -->
<property name="dataSource">
<ref local="dataSource" />
</property>
<!-- mappingResouces属性用来列出全部映射文件 -->
<property name="mappingResources">
<list>
<!--以下用来列出所有的PO映射文件 -->
<value>Person.hbm.xml</value>
</list>
</property>
<!--定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<!-- 指定Hibernate的连接方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<!-- 不同数据库连接,启动时选择create,update,create-drop -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!-- 配置Person持久化类的DAO bean -->
<bean id="PersonDaoImpl" class="com.impl.PersonDaoImpl">
<!-- 采用依赖注入来传入SessionFactory的引用 -->
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
Hibernate实体类映射文件Person.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.entity.Person" table="person">
<!-- 配置主键信息 -->
<id name="id" column="ID" type="integer">
<generator class="identity"></generator>
</id>
<!-- 配置属性信息,默认type为string类型,所以不需要配置 -->
<property name="name" column="NAME" not-null="true" type="string"></property>
</class>
</hibernate-mapping>
测试类:(记得根据实际数据来编写测试数据)
package com.test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.entity.Person;
import com.impl.PersonDaoImpl;
public class TestHibernate {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void save() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
PersonDaoImpl personDaoImpl = (PersonDaoImpl)ctx.getBean("PersonDaoImpl");
System.out.println(personDaoImpl);
Person person = new Person();
person.setName("Tom");
personDaoImpl.save(person);
}
@Test
public void get() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
PersonDaoImpl personDaoImpl = (PersonDaoImpl)ctx.getBean("PersonDaoImpl");
Person person = personDaoImpl.get(1);
System.out.println(person.getName());
}
@Test
public void update() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
PersonDaoImpl personDaoImpl = (PersonDaoImpl)ctx.getBean("PersonDaoImpl");
System.out.println(personDaoImpl);
Person person = new Person();
person.setId(1);
person.setName("猫");
personDaoImpl.update(person);
}
@Test
public void delete() {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
PersonDaoImpl personDaoImpl = (PersonDaoImpl)ctx.getBean("PersonDaoImpl");
System.out.println(personDaoImpl);
Person person = new Person();
person.setId(2);
personDaoImpl.delete(person);
}
}
其他的结构图,lib可以从附件获得。
- 大小: 26 KB
分享到:
相关推荐
在"25_黑马程序员_黎活明_Spring2.5视频教程_搭建和配置Spring与Hibernate整合的环境.avi"这个文件中,可能详细演示了如何配置这些库到项目的类路径中。 接着,需要配置Spring的IoC容器。这可以通过XML配置文件完成...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2作为MVC框架处理请求和展示,Spring提供依赖注入和事务管理,Hibernate则作为ORM框架处理数据库操作。将这三个框架整合在...
本教程将详细介绍如何整合Spring和Hibernate,以创建一个简单的工作示例。 首先,我们需要在项目中引入Spring和Hibernate的依赖。这通常通过Maven或Gradle的配置文件完成,确保添加对应的库依赖,如Spring的核心库...
在整合过程中,开发者需要注意配置文件的正确设置,包括Struts2的struts.xml、Hibernate的hibernate.cfg.xml以及Spring的applicationContext.xml等。还需要确保各框架之间的依赖注入正确无误,例如,Spring需要知道...
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
本文将深入探讨如何将Spring与Hibernate整合,以实现对数据库的简单添加记录功能,这对于初学者来说是一次宝贵的学习机会。 首先,我们需要理解Spring的核心概念。Spring提供了一个依赖注入(DI)容器,它负责管理...
在"标签"中,"spring 整合 hibernate helloworld"进一步强调了这是关于Spring与Hibernate整合的基础教学,可能包含了一个简单的入门级示例。"helloworld"通常表示最基础的程序,用于展示框架的基本用法。 在"压缩...
1. **配置Spring**:首先,我们需要创建一个Spring的核心配置文件(如`applicationContext.xml`),在这里定义bean的实例化、依赖注入以及事务管理等。例如,我们可以配置数据源、SessionFactory(Hibernate的会话...
4. **整合流程**:整合Struts 2、Hibernate和Spring,首先需要配置Spring的IoC容器来管理所有组件,包括Action、DAO和Service。然后,使用Spring的HibernateTemplate或JdbcTemplate进行数据访问。接着,将Struts 2与...
JavaEE轻量级框架Struts2、Hibernate和Spring的整合开发是现代企业级应用开发中的常见模式,这种组合被称为SSH(Struts2、Spring、Hibernate)框架。这三种技术分别承担了不同职责,共同构建了一个高效、灵活且可...
Spring还集成了其他框架,包括Struts2和Hibernate,提供了统一的事务管理策略,使得在多个框架间协调工作变得更加简单。 在SSH整合过程中,你需要以下关键的jar包: 1. **Struts2** 相关的jar:包括`struts2-core....
以上就是Spring、Struts和Hibernate的简单整合,这种整合方式在早期的Java Web项目中非常常见。虽然现代开发趋势更倾向于使用Spring Boot和Spring MVC,但理解这种传统的三层架构对于理解现代框架的工作原理仍然很有...
最简单的Spring+Struts2+Hibernate整合例子,MySql数据库,IDE是JavaEE版的Eclipse,tomcat7.0 ,实现功能:登录+注册+增删改查+一键清空数据库表的数据。所有jar文件都在里面了。
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例完整源码》是针对Java企业级开发的一份重要资源,它涵盖了四个关键的技术领域:Eclipse集成开发环境,Struts MVC框架,Hibernate对象关系映射工具,以及...
在Spring与Hibernate整合的过程中,c3p0是一个重要的第三方组件,它是一个开源的JDBC连接池,能够有效地管理和重用数据库连接,从而减少创建和关闭连接的开销,提高系统性能。c3p0提供了许多配置选项,如最小连接数...
通常,Spring会作为"粘合剂",将Struts和Hibernate整合在一起。例如,Spring可以管理Struts的Action,实现业务逻辑的解耦;同时,Spring可以配置Hibernate SessionFactory,并通过AOP代理处理数据访问事务。 5. **...
4. **整合Spring与Hibernate**:通过Spring的LocalSessionFactoryBean来创建SessionFactory,同时利用Spring的TransactionManager来管理事务。 5. **编写业务逻辑**:在Spring的Service层中注入DAO,使用Hibernate的...
在"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate"的DEMO中,开发者通常会创建一个Maven工程,配置相关依赖,然后分别设置Spring的配置文件(如`applicationContext.xml`)、SpringMVC的配置文件...
【标题】"Tapestry+Hibernate+Spring 整合应用示例" 【正文】 Tapestry、Hibernate 和 Spring 是三个在 Java Web 开发中非常关键的开源框架,它们各自在应用程序的不同层面上发挥着重要作用。Tapestry 是一个基于...