集成Spring与Hibernate

集成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 代码
 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 ;        }  

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

其中 HibernateCallback是一个回调接口!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值