HibernateTemplate’s main responsibility is to simplify the work of opening
and closing Hibernate Sessions and to convert Hibernate-specific exceptions
to one of the Spring ORM exceptions
下面实例是按照Spring in action 2nd Edition里面的示例写的。数据库使用Oracle.
1.定义一个POJO
代码如下:
public class Motorist { private long id; private String email; private String password; private String firstName; private String lastName; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
2.创建表
create table MOTORIST ( ID NUMBER, EMAIL VARCHAR2(32), PASSWORD VARCHAR2(32), FIRSTNAME VARCHAR2(32), LASTNAME VARCHAR2(32) )
下面就是如何简单的利用Spring 和Hibernate做ORM。
3.定义hibernate配置文件
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.roadrantz.dao.jdbc.Motorist" table="MOTORIST" lazy="false"> <id name="id" column="ID"/> <property name="email" column="EMAIL"/> <property name="password" column="PASSWORD"/> <property name="firstName" column="FIRSTNAME"/> <property name="lastName" column="LASTNAME"/> </class> </hibernate-mapping>
4.定义数据源
在Spring的配置文件中加入
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.0.20:1521:test"/> <property name="username" value="test"/> <property name="password" value="test"/> <property name="initialSize" value="5"/> <property name="maxActive" value="10"/> </bean>
5.在Spring配置文件中定义LocalSessionFactoryBean
在Spring配置文件中加入
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingResources"> <list> <value>com/roadrantz/domain/Motorist.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> </props> </property> </bean>
6.定义HibernateTemplate
在Spring配置文件中加入
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
7.写测试类
以下是HibernateRantDao类的片断
public Motorist getMotoristById(long id) { return (Motorist) hibernateTemplate.load(Motorist.class, id); } public void saveMotoris(Motorist m) { hibernateTemplate.saveOrUpdate(m); } public void delMotorist(Motorist m) { hibernateTemplate.delete(m); } public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "com/roadrantz/dao/hibernate/hibernaterant.xml"); HibernateRantDao p = (HibernateRantDao) ctx.getBean("rantDao"); // Motorist m = (Motorist) ctx.getBean("motorist"); /* m.setId(2l); m.setEmail("wax@sohu.com"); m.setFirstName("wax"); m.setLastName("robin"); m.setPassword("zzz"); //保存 // p.saveMotoris(m); //删除 p.delMotorist(m);*/ //查找 Motorist m = p.getMotoristById(1l); System.out.println(m.getLastName()); }
8,在Spring配置文件中加入POJO和测试类
<bean id="rantDao" class="com.roadrantz.dao.hibernate.HibernateRantDao"> <property name="hibernateTemplate" ref="hibernateTemplate"/> </bean> <bean id="motorist" class="com.roadrantz.dao.jdbc.Motorist"/>
9.运行函数,输入结果