集成Spring与Hibernate,
将dataSource与sessionFactory添加进Spring的配置文件,
将Hibernate下的DAO交由Spring来管理。

xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.   
  7.   
  8.     <bean id="dataSource"  
  9.         class="org.apache.commons.dbcp.BasicDataSource">  
  10.         <property name="driverClassName"  
  11.             value="com.mysql.jdbc.Driver">  
  12.         </property>  
  13.         <property name="url"  
  14.             value="jdbc:mysql://localhost:3306/test">  
  15.         </property>  
  16.         <property name="username" value="root"></property>  
  17.         <property name="password" value="admin"></property>  
  18.     </bean>  
  19.     <bean id="sessionFactory"  
  20.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  21.         <property name="dataSource">  
  22.             <ref bean="dataSource" />  
  23.         </property>  
  24.         <property name="hibernateProperties">  
  25.             <props>  
  26.                 <prop key="hibernate.dialect">  
  27.                     org.hibernate.dialect.MySQLDialect  
  28.                 </prop>  
  29.             </props>  
  30.         </property>  
  31.         <property name="mappingResources">  
  32.             <list>  
  33.                 <value>org/justin/vo/Login.hbm.xml</value></list>  
  34.         </property></bean>  
  35.     <bean id="loginDAO" class="org.justin.dao.impl.LoginDAO">  
  36.         <property name="sessionFactory">  
  37.             <ref bean="sessionFactory" />  
  38.         </property>  
  39.     </bean>  

在Spring提供的HibernateDaoSupprot超类中,如果注入SessionFactory,HibernateDaoSupport就会自动生成HibernateTemplate对象,HibernateTemplate是线程安全的。

让Hibernate的DAO类继承Spring的HibernateDaoSupport类,这样DAO类就可以通过getHibernateTemplate()方法
获得一个HibernateTemplate对象,HibernateTemplate对象本身包含了SessionFactory的引用,因此HibernateTemplate对象可以完成所有的Hibernate操作。
java 代码
 
  1. public class LoginDAO extends HibernateDaoSupport implements ILoginDAO  
通过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实现分页处理
java 代码
  1.  public List findByPagination(Login login){  
  2.          List list =(List)this.getHibernateTemplate().execute(new HibernateCallback(){  
  3.             public Object doInHibernate(Session session)throws HibernateException,SQLException  
  4.             {  
  5.                 Criteria criteria = session.createCriteria(Login.class)  
  6.                        .setFirstResult(0)  
  7.                        .setMaxResults(10);  
  8.                           
  9.                 return criteria.list();  
  10.   /* 也可以使用Query接口            
  11. Query query = session.createQuery("From Login as L") 
  12.                    .setFirstResult(0).setMaxResults(3); 
  13.                  
  14.                 return query.list();*/  
  15.             }  
  16.          });  
  17.            
  18.          return list ;  
  19.      }  

HibernateTemplate提供的Object execute(HibernateCallback action方法允许执行任何Hibernate操作
在doInHibernate中可以使用任意的Hibernate接口,如Query,Criteria等

其中
HibernateCallback是一个回调接口!
评论
发表评论

您还没有登录,请登录后发表评论

justin8335
搜索本博客
最近加入圈子
存档
最新评论