spring与hibernate 的整合

 

    spring与hibernate的整合  
 
hibernate的所有初始化信息都是建立在配置文件中的。如:
Configuration ---> SessionFactory ---> Session .
那么,我们在spring中,就只用直接去操作sessionFactory所需要的信息来创建数据库的操作类。
在spring中,提供了一个名为:LocalSessionFactoryBean的类。顾名思义,它就是一个SessionFactory,

具体操作:
  新建一个XML文件:application.xml

//数据库连接的相关信息
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName">
     <value>.....</value>
  </property>
 ......
</bean>

 

//
<bean id="sessionFactory"
 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

 //注入dataSource信息
  <property name="dataSource">
     <ref bean="dataSource"/>
  </property>

 //配置hibernate的相关属性
   <property name="hibernateProperties">
    <props>
       <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
       <prop name="show_sql">true</props>
   ......
    </props>
 </property>
 
 //ORM映射文件:
 //针对ORM映射文件,有两种方式配置进来:
 //方式一:
 <property name="mappingResources">
  <list>
   <value>demo.hbm.xml</value>
   <value>test.hbm.xml</value>
   .....
  </list>
 </property>

 //在方式一的情况下,若ORM文件过多,或者团队开发时,势必不适用,所以引入方式二,
 //方式二:
 <property name="mappingDirectoryLocation">
  <list>
   //在团队开发时,将每个人的ORM文件夹的路径写入
   <value>classpath:com/my/po</value>
   <value>classpath:com/his/po</value>
   <value>classpath:com/her/po</value>
   ......
  </list>
 </property>
</bean>

//在spring中,操作hibernate,都是基于HibernateTemplate类的基础上的。引入hibernateTemplate:
<bean id="hibernateTemplate"
  class=""org.springframework.orm.hibernate.HibernateTemplate>
 <property name="sessionFactory">
  <ref bean="sessionFactory"/>
 </property>
</bean>


java中的使用:

public class DemoImpl implements DemoInter{

 private DataSource dataSource;

 //由于配置文件中注入了dataSource,所以,这里只用注入hibernateTemplate,而不用new.
 private HibernateTemplate hibernateTemplate;

 public void setDataSource(DataSource dataSource){
  this.dataSource = dataSource;
 }
 
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
  this.hibernateTemplate = hibernateTemplate;
 }

 public List queryByID(int id){

  String hql = "from Emp emp where id = ?";
  return hibernateTemplate.find(hql,id,Hibernate.Integer);
 }

 ......
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值