当前位置: 首页>编程语言>正文

Spring Integration 系统集成开发 实战 spring集成hibernate

这一篇记录Spring与Hibernate结合使用的例子

还是以一个demo来说明:

1、首先建立数据库,新建数据库,名称为hibernate_spring,然后在数据库中建表person,包含两个字段:id与name,person表的结构如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_xml,第1张

2、建立Java工程,由于这里暂时没有整合struts2,所以建立普通的Java工程就行了,这里我们给工程取名为HibernateSpring03

3、给工程加入Spring,在工程上右键--->MyEclipse--->Add Spring Capabilities...,出现如下所示界面:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_整合_02,第2张

这里我们选择上图中的三个库,然后next,如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_hibernate_03,第3张

直接finish,Spring的添加就告一段落了

4、给工程加入Hibernate支持,还是在工程上右键--->MyEclipse--->Add Hibernate Capabilities...,出现如下图所示界面:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_spring_04,第4张

这里我们直接next,如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_hibernate_05,第5张

注意这里选择Spring的配置文件,而不选Hibernate的配置文件,因为Hibernate和Spring整合了之后,Hibernate的配置文件就不需要了,直接在Spring的配置文件里配置相关的数据库信息就可以了,选择next后如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_xml_06,第6张

这里我们选择已存在的Spring配置文件,然后next,如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_整合_07,第7张

在上图中填入数据库的相关配置,MySQL的配置信息就是上面这些了,然后next,如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_xml_08,第8张

取消勾选后点击finish,这时候Hibernate和Spring的添加算是完成了,但是工程里会报错,如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_整合_09,第9张

这是由于Spring依赖的两个jar包还没有导入进来,分别是commons-dbcp-1.4.jar和commons-pool-1.6.jar,我们在工程上右键,build path,configure build path,然后在下图所示的界面中,加入这两个包

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_hibernate_10,第10张

注意,除了上面两个jar包外,还有一个数据库的驱动jar包,也要加入进来,都添加完成后,我们clean一下工程,就不会报错了,现在的项目结构如下图所示:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_xml_11,第11张

5、编写代码。

首先是Person类的代码,Person类是一个标准的Java bean,代码很简单,如下所示:

package com.test.model;

public class Person {

	private int id;
	private String name;

	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;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + "]";
	}

}

然后是dao的代码,对于Person的操作,有插入数据库和从数据库获取这两个,PersonDao接口里声明了这两个操作方法,如下代码所示:

package com.test.dao;

import com.test.model.Person;

public interface PersonDao {
	
	void insertPerson(Person person);
	
	Person getPerson(int id);

}

下面为PersonDao编写实现类PersonDaoImpl,代码如下:

package com.test.dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.test.dao.PersonDao;
import com.test.model.Person;

public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {

	@Override
	public void insertPerson(Person person) {
		this.getHibernateTemplate().save(person);
	}

	@Override
	public Person getPerson(int id) {
		return this.getHibernateTemplate().get(Person.class, id);
	}

}

上面的代码需要注意的是,PersonDaoImpl类不仅实现了PersonDao接口,而且继承了HibernateDaoSupport类,该类中的getHibernateTemplate()方法返回一个HibernateTemplate对象,可以使用该对象实现对数据库的访问,而不是像Hibernate中,通过Session和Transaction来访问了

下面要为Person类编写hbm文件,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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>

	<class name="com.test.model.Person" table="person">
		<id name="id" column="id" type="int">
			<generator class="increment"></generator>
		</id>
		<property name="name" column="name" type="string"></property>
	</class>

</hibernate-mapping>

这里跟之前在Hibernate中的没什么区别。

下面要编写applicationContext.xml配置文件,在之前,MyEclipse已经为我们生成了部分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" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/hibernate_spring">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/test/model/Person.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<bean id="personDao" class="com.test.dao.impl.PersonDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
</beans>

在上面的代码中,我们自己添加的内容主要是下图中标注的部分:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_spring_12,第12张

然后可以编写测试代码了,如下所示:

package com.test;

import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.test.dao.PersonDao;
import com.test.model.Person;

public class Test {

	public static void main(String[] args) {
		FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(
				"src\applicationContext.xml");
		PersonDao personDao = (PersonDao) context.getBean("personDao");
		Person person = new Person();
		person.setName("Jack");
		personDao.insertPerson(person);
	}

}

测试代码通过加载配置文件,然后取出了配置文件中名称为personDao的类,通过该类保存了一个Person对象,控制台打印如下:

Spring Integration 系统集成开发 实战 spring集成hibernate,Spring Integration 系统集成开发 实战 spring集成hibernate_hibernate_13,第13张

可以看到,数据插入到了数据库中,到这里基本上就是Hibernate和Spring整合的demo的全部过程了,下面我总结在整合过程中注意的问题:

①整合时要注意不能忘了添加三个jar包,分别是:

MySQL数据库驱动jar包、commons-dbcp-1.4.jar、commons-poor-1.6.jar

②applicationContext.xml配置文件中,对Person.hbm.xml文件的映射,应该写全路径,因为我们的Person.hbm.xml文件放在com.test.model下,所以映射标签写法为:

<property name="mappingResources">
	<list>
		<value>com/test/model/Person.hbm.xml</value>
	</list>
</property>

③applicationContext.xml文件放在src目录下,所以在测试代码中,读取配置文件应该传"src\\applicationContext.xml"

以上就是我学习Hibernate与Spring整合的笔记

源代码及jar包下载


https://www.xamrdz.com/lan/59b1951262.html

相关文章: