spring与hibernate 的整合

来源:互联网 发布:js孩子节点取法 编辑:程序博客网 时间:2024/05/20 09:06
原文地址:的整合">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">
  <propertyname="driverClassName">
    <value>.....</value>
  </property>
 ......
</bean>

 

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

 //注入dataSource信息
  <propertyname="dataSource">
    <refbean="dataSource"/>
  </property>

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

 //在方式一的情况下,若ORM文件过多,或者团队开发时,势必不适用,所以引入方式二,
 //方式二:
 <propertyname="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>
 <propertyname="sessionFactory">
  <refbean="sessionFactory"/>
 </property>
</bean>


java中的使用:

public class DemoImpl implements DemoInter{

 private DataSource dataSource;

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

 public void setDataSource(DataSourcedataSource){
  this.dataSource =dataSource;
 }
 
 public voidsetHibernateTemplate(HibernateTemplate hibernateTemplate){
  this.hibernateTemplate =hibernateTemplate;
 }

 public List queryByID(int id){

  String hql = "from Emp empwhere id = ?";
  returnhibernateTemplate.find(hql,id,Hibernate.Integer);
 }

 ......
}

原创粉丝点击