Spring整合Hibernate简单示例
1.SpringIntegrateHibernateDemo程序结构:
2.HibernateTest.java源代码:
- package com.xqh.test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class HibernateTest {
- public static void main(String[] args)throws Exception
- {
- //创建Spring容器
- ApplicationContext ctx =
- new ClassPathXmlApplicationContext("bean.xml");
- //获取DAO组件
- PersonDao pdao = (PersonDao)ctx.getBean("personDao");
- //循环插入10条记录
- for (int i = 0 ; i < 10 ; i++ )
- {
- pdao.save(new Person(i + "" , i + 10));
- }
- }
- }
3.Person.java源代码:
- package com.xqh.test;
- public class Person {
- private int id;
- private String name;
- private int age;
- // 无参数的构造器
- public Person() {
- }
- // 初始化全部属性的构造器
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
4.PersonDao.java源代码:
- package com.xqh.test;
- import java.util.List;
- public interface PersonDao
- {
- /**
- * 加载Person实例
- * @param id 需要加载的Person实例的主键值
- * @return 返回加载的Person实例
- */
- Person get(Integer id);
- /**
- * 保存Person实例
- * @param person 需要保存的Person实例
- * @return 刚刚保存的Person实例的标识属性值
- */
- Integer save(Person person);
- /**
- * 修改Person实例
- * @param person 需要修改的Person实例
- */
- void update(Person person);
- /**
- * 删除Person实例
- * @param id 需要删除的Person实例的标识属性值
- */
- void delete(Integer id);
- /**
- * 删除Person实例
- * @param person 需要删除的Person实例
- */
- void delete(Person person);
- /**
- * 根据用户名查找Person
- * @param name 查询的人名
- * @return 指定用户名对应的全部Person
- */
- List<Person> findByName(String name);
- /**
- * 查询全部Person实例
- * @return 全部Person实例
- */
- public List findAllPerson();
- }
5.PersonDaoHibernate.java源代码:
- package com.xqh.test;
- import java.util.List;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- public class PersonDaoHibernate extends HibernateDaoSupport implements PersonDao
- {
- /**
- * 加载Person实例
- * @param id 需要加载的Person实例的标识属性值
- * @return 指定id对应的Person实例
- */
- public Person get(Integer id)
- {
- return (Person)getHibernateTemplate()
- .get(Person.class, id);
- }
- /**
- * 保存Person实例
- * @param person 需要保存的Person实例
- * @return 刚刚保存的Person实例的标识属性值
- */
- public Integer save(Person person)
- {
- return (Integer)getHibernateTemplate()
- .save(person);
- }
- /**
- * 修改Person实例
- * @param person 需要修改的Person实例
- */
- public void update(Person person)
- {
- getHibernateTemplate().update(person);
- }
- /**
- * 删除Person实例
- * @param id 需要删除的Person实例的标识属性值
- */
- public void delete(Integer id)
- {
- getHibernateTemplate().delete(get(id));
- }
- /**
- * 删除Person实例
- * @param person 需要删除的Person实例
- */
- public void delete(Person person)
- {
- getHibernateTemplate().delete(person);
- }
- /**
- * 根据用户名查找Person
- * @param name 查询的人名
- * @return 指定用户名对应的全部Person
- */
- public List<Person> findByName(String name)
- {
- return (List<Person>)getHibernateTemplate()
- .find("from Person p where p.name like ?" , name);
- }
- /**
- * 查询全部Person实例
- * @return 全部Person实例
- */
- public List findAllPerson()
- {
- return (List<Person>)getHibernateTemplate()
- .find("from Person");
- }
- }
6.bean.xml配置文件:
- <?xml version="1.0" encoding="GBK"?>
- <!-- 指定Spring配置文件的DTD信息 -->
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
- "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
- <!-- Spring配置文件的根元素 -->
- <beans>
- <!-- 定义数据源Bean,使用C3P0数据源实现 -->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
- destroy-method="close">
- <!-- 指定连接数据库的驱动 -->
- <property name="driverClass" value="com.mysql.jdbc.Driver"/>
- <!-- 指定连接数据库的URL -->
- <property name="jdbcUrl" value="jdbc:mysql://localhost/db_test"/>
- <!-- 指定连接数据库的用户名 -->
- <property name="user" value="root"/>
- <!-- 指定连接数据库的密码 -->
- <property name="password" value="1120"/>
- <!-- 指定连接数据库连接池的最大连接数 -->
- <property name="maxPoolSize" value="40"/>
- <!-- 指定连接数据库连接池的最小连接数 -->
- <property name="minPoolSize" value="1"/>
- <!-- 指定连接数据库连接池的初始化连接数 -->
- <property name="initialPoolSize" value="1"/>
- <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
- <property name="maxIdleTime" value="20"/>
- </bean>
- <!-- 定义Hibernate的SessionFactory -->
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <!-- 依赖注入数据源,注入正是上面定义的dataSource -->
- <property name="dataSource" ref="dataSource"/>
- <!-- mappingResouces属性用来列出全部映射文件 -->
- <property name="mappingResources">
- <list>
- <!-- 以下用来列出Hibernate映射文件 -->
- <value>Person.hbm.xml</value>
- </list>
- </property>
- <!-- 定义Hibernate的SessionFactory的属性 -->
- <property name="hibernateProperties">
- <props>
- <!-- 指定数据库方言 -->
- <prop key="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect</prop>
- <!-- 是否根据需要每次自动创建数据库 -->
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- <!-- 显示Hibernate持久化操作所生成的SQL -->
- <prop key="hibernate.show_sql">true</prop>
- <!-- 将SQL脚本进行格式化后再输出 -->
- <prop key="hibernate.format_sql">true</prop>
- </props>
- </property>
- </bean>
- <!-- 定义DAO Bean-->
- <bean id="personDao" class="com.xqh.test.PersonDaoHibernate">
- <!-- 注入持久化操作所需的SessionFactory -->
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- </beans>
7.Person.hbm.xml配置文件:
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE hibernate-mapping
- PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.xqh.test">
- <class name="Person" table="person">
- <!-- 映射标识属性 -->
- <id name="id" column="Id"
- type="int">
- <!-- 指定主键生成器策略 -->
- <generator class="identity"/>
- </id>
- <!-- 映射普通属性 -->
- <property name="name" type="string"/>
- <property name="age" type="int"/>
- </class>
- </hibernate-mapping>