集成Spring与Hibernate,
将dataSource与sessionFactory添加进Spring的配置文件,
将Hibernate下的DAO交由Spring来管理。
在Spring提供的HibernateDaoSupprot超类中,如果注入SessionFactory,HibernateDaoSupport就会自动生成HibernateTemplate对象,HibernateTemplate是线程安全的。
让Hibernate的DAO类继承Spring的HibernateDaoSupport类,这样DAO类就可以通过getHibernateTemplate()方法
获得一个HibernateTemplate对象,HibernateTemplate对象本身包含了SessionFactory的引用,因此HibernateTemplate对象可以完成所有的Hibernate操作。
通过HibernateTemplate提供的方法实现CRUD操作
(1)Serializable save(Object entity)
(2)Object get(Class entity , Serializable id)
(3)Object load(String entityName,Serializable id)
(4)void update(Objecet entity)
(5)void delete(Objecet entity)
HibernateTemplate实现分页处理
HibernateTemplate提供的Object execute( HibernateCallback action ) 方法允许执行任何Hibernate操作
在doInHibernate中可以使用任意的Hibernate接口,如Query,Criteria等
其中 HibernateCallback是一个回调接口!
将dataSource与sessionFactory添加进Spring的配置文件,
将Hibernate下的DAO交由Spring来管理。
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 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/test">
- </property>
- <property name="username" value="root"></property>
- <property name="password" value="admin"></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>
- </props>
- </property>
- <property name="mappingResources">
- <list>
- <value>org/justin/vo/Login.hbm.xml</value></list>
- </property></bean>
- <bean id="loginDAO" class="org.justin.dao.impl.LoginDAO">
- <property name="sessionFactory">
- <ref bean="sessionFactory" />
- </property>
- </bean>
在Spring提供的HibernateDaoSupprot超类中,如果注入SessionFactory,HibernateDaoSupport就会自动生成HibernateTemplate对象,HibernateTemplate是线程安全的。
让Hibernate的DAO类继承Spring的HibernateDaoSupport类,这样DAO类就可以通过getHibernateTemplate()方法
获得一个HibernateTemplate对象,HibernateTemplate对象本身包含了SessionFactory的引用,因此HibernateTemplate对象可以完成所有的Hibernate操作。
java 代码
- public class LoginDAO extends HibernateDaoSupport implements ILoginDAO
(1)Serializable save(Object entity)
(2)Object get(Class entity , Serializable id)
(3)Object load(String entityName,Serializable id)
(4)void update(Objecet entity)
(5)void delete(Objecet entity)
HibernateTemplate实现分页处理
java 代码
public List findByPagination(Login login){ List list =(List)this.getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session)throws HibernateException,SQLException { Criteria criteria = session.createCriteria(Login.class) .setFirstResult(0) .setMaxResults(10); return criteria.list(); /* 也可以使用Query接口
Query query = session.createQuery("From Login as L") .setFirstResult(0).setMaxResults(3); return query.list();*/ } }); return list ; }
Query query = session.createQuery("From Login as L") .setFirstResult(0).setMaxResults(3); return query.list();*/ } }); return list ; }
HibernateTemplate提供的Object execute( HibernateCallback action ) 方法允许执行任何Hibernate操作
在doInHibernate中可以使用任意的Hibernate接口,如Query,Criteria等
其中 HibernateCallback是一个回调接口!