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);
}
......
}