5.7 Spring与Hibernate整合应用
2016-03-10 00:00
555 查看
摘要: Spring与Hibernate整合
下面以一个简单的实例说明Spring与Hibernate的整合策略,步骤如下。
图5.9 添加Spring Capabilities
单击【Next】按钮,提示是否建立Spring配置文件,在默认情况下选择application Context.xml文件的存放路径,选择在WEB-INF文件夹下,然后单击【Finish】按钮,如图5.10所示。
图5.10 创建applicationContext.xml文件
图5.11 添加Hibernate库
单击【Next】按钮,出现如图5.12所示对话框,提示是用Hibernate的配置文件还是用Spring的配置文件进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理。这样最后生成的工程中就不包含hibernate.cfg.xml,好处是在一个地方就可以对Hibernate进行管理。
图5.12 定义Hibernate配置
单击【Next】按钮,出现如图5.13所示的对话框,提示是创建一个新的Hibernate配置文件还是使用已有的配置文件,由于刚才已经生成了Spring配置文件,并且要在其中进行Hibernate的配置,所以选择复选框“Existing Spring configuration file”。
图5.13 定义Spring-Hibernate配置
单击【Next】按钮,出现如图5.14所示的对话框,要求选择数据库连接信息。这里需要注意一点,Bean Id处填写数据源的名称,如“datasource”。数据源的创建请参考4.2.1节中的第2步。
图5.14 指定新的Spring数据源连接信息
单击【Next】按钮,出现如图5.15所示的对话框,提示是否创建SessionFactory类,由于本程序Spring为注入sessionFactory,所以不用创建,单击【Finish】按钮。
图5.15 定义SessionFactory属性
图5.16 Hibernate映射文件和POJO类
单击【Next】按钮,在ID generator中选择native,直接单击【Finish】按钮完成。
运行该测试类后,打开数据库,可以发现在DLB表中添加了一项记录,如图5.17所示。
图5.17 登录表
Spring的Hibernate ORM 框架带来了方便的HibernateDaoSupport类,该类为Dao类提供了非常方便的方法getHibernateTemplate(),Dao类只要继承HibernateDaoSupport就可以使用该方法,例如上例的Dao实现类可以改成如下的代码:
附:目录《JavaEE基础实用教程》笔记说明
下面以一个简单的实例说明Spring与Hibernate的整合策略,步骤如下。
1 在SQL Server 2005中创建数据库表
数据库名为XSCJ,表见附录A的登录表。2 创建Web项目
命名为“Hibernate_Spring”3 添加Spring的开发能力
右击项目名,选择【MyEclipse】→【Add Spring Capabilities…】菜单项,将出现如图5.9所示的对话框,选中要应用的Spring的版本及所需的类库文件。注意,本书用的Spring版本为Spring 2.0。选择Spring的核心类库Spring 2.0 Core Libraries、Spring 2.0 Web Labraries、Spring 2.0 AOP Libraries和Spring 2.0 Persistence JDBC Libraries。图5.9 添加Spring Capabilities
单击【Next】按钮,提示是否建立Spring配置文件,在默认情况下选择application Context.xml文件的存放路径,选择在WEB-INF文件夹下,然后单击【Finish】按钮,如图5.10所示。
图5.10 创建applicationContext.xml文件
4 加载Hibernate框架
右击工程文件,选择【MyEclipse】→【Add Hibernate Capabilities…】菜单项,出现如图5.11所示的对话框。选择Hibernate版本及需要的类库。图5.11 添加Hibernate库
单击【Next】按钮,出现如图5.12所示对话框,提示是用Hibernate的配置文件还是用Spring的配置文件进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理。这样最后生成的工程中就不包含hibernate.cfg.xml,好处是在一个地方就可以对Hibernate进行管理。
图5.12 定义Hibernate配置
单击【Next】按钮,出现如图5.13所示的对话框,提示是创建一个新的Hibernate配置文件还是使用已有的配置文件,由于刚才已经生成了Spring配置文件,并且要在其中进行Hibernate的配置,所以选择复选框“Existing Spring configuration file”。
图5.13 定义Spring-Hibernate配置
单击【Next】按钮,出现如图5.14所示的对话框,要求选择数据库连接信息。这里需要注意一点,Bean Id处填写数据源的名称,如“datasource”。数据源的创建请参考4.2.1节中的第2步。
图5.14 指定新的Spring数据源连接信息
单击【Next】按钮,出现如图5.15所示的对话框,提示是否创建SessionFactory类,由于本程序Spring为注入sessionFactory,所以不用创建,单击【Finish】按钮。
图5.15 定义SessionFactory属性
5 生成与数据库表对应的Java数据对象和映射
打开MyEclipse的Database Exploer Perspective,右击DLB表,选择Hibernate Reverse Engineering菜单项,如图5.16所示设置。图5.16 Hibernate映射文件和POJO类
单击【Next】按钮,在ID generator中选择native,直接单击【Finish】按钮完成。
6 编写DlDao.java接口
在src文件夹下建立包org.dao,在该包先建立接口,命名为“DlDao”,这里主要以添加用户为例,代码如下:package org.dao; import org.model.Dlb; public interface DlDao { public void save(Dlb dl); }
7 编写DlDao.java实现类
在src文件夹下建立包org.dao.imp,在该包下建立类,命名为“DlDaoImp”,代码。package org.dao.imp; import org.dao.DlDao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.model.Dlb; public class DlDaoImp implements DlDao{ //依赖注入SessionFactory对象,set方法注入 private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void save(Dlb dl) { try{ //获得Session对象 Session session=sessionFactory.openSession(); Transaction ts=session.beginTransaction(); session.save(dl); ts.commit(); }catch(Exception e){ e.printStackTrace(); } } }
8 修改Spring配置文件applicationContext.xml
applicationContext.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 用Bean定义数据源 --> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 定义数据库驱动 --> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"> </property> <!-- 定义数据库URL --> <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=XSKC"> </property> <!-- 定义数据库的用户名 --> <property name="username" value="liuyanbo"></property> <!-- 定义数据库密码 --> <property name="password" value="123456"></property> </bean> <!-- 定义Hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--定义SessionFactory必须注入DataSource--> <property name="dataSource"> <ref bean="datasource" /> </property> <!--定义Hibernate的SessionFactory属性--> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> </props> </property> <!-- 定义POJO的映射文件 --> <property name="mappingResources"> <list> <value>/org/model/Dlb.hbm.xml</value> </list> </property> </bean> <!-- 注入dlDao --> <bean id="dlDao" class="org.dao.imp.DlDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>
9 编写测试类
在src文件夹下建立包test,在该包下建立类Test,代码如下:package test; import org.dao.DlDao; import org.model.Dlb; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args){ Dlb dlb=new Dlb(); dlb.setId(1); dlb.setXh("081109"); dlb.setKl("123456"); ApplicationContext context=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); DlDao dlDao=(DlDao) context.getBean("dlDao"); dlDao.save(dlb); } }
运行该测试类后,打开数据库,可以发现在DLB表中添加了一项记录,如图5.17所示。
图5.17 登录表
Spring的Hibernate ORM 框架带来了方便的HibernateDaoSupport类,该类为Dao类提供了非常方便的方法getHibernateTemplate(),Dao类只要继承HibernateDaoSupport就可以使用该方法,例如上例的Dao实现类可以改成如下的代码:
package org.dao.imp; import org.dao.DlDao; import org.model.Dlb; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class DlDaoImp extends HibernateDaoSupport implements DlDao{ public void save(Dlb dl) { getHibernateTemplate().save(dl); } }
附:目录《JavaEE基础实用教程》笔记说明
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- Hibernate Oracle sequence的使用技巧
- 模拟Spring的简单实现
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- struts2 spring整合fieldError问题
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载