Spring 学习之二(Spring 和 hibernate 整合)

 

 

如果你不明白hibernate的搭建可以参考​​《Hibernate 学习路程之一(Hibernate 环境的搭建)》​​

 

Hibernate主配置文件包含三部分内容
1>连接数据库的信息
2>自己的属性配置
3>映射文件的位置

这三部分内容,在<session-factory>节点下,也就是说这三部分内容主要是为了构造一个
SessionFactory对象。
配置文件的整合

1,完全删除hibernate主配置文件,把hibernate 配置文件的内容(三方面)转移到spring主配置
文件中
2,保留hibernate主配置文件,并用spring配置文件指向hibernate配置文件。


项目上我们一般按照下面的方式


保留hibernate 主配置文件,但把连接数据库的信息转移到spring 配置文件中
第一步:添加 springhibernate Jar 包支持
       Jdbc libraries  三个
第二步:注释 hibernte 中连接数据库信息
 
第三步:spring 配置中添加 dataSource 与 sessionFactory 
 

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation">
<value>file:src/hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>

hibernate主配置文件中写hibernate的属性配置及其映射文件的信息

 

<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<mapping resource="com/wfg/pojo/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>

 

第四步: dao extends HibernateDAOSupport

StudentDAO extends HibernateDaoSupport 


super.getHibernateTemplate()  有完整的save等方法
Session session = super.getSession(); 

 

第五步:spring 配置文件中配置 DAO 类 


<bean id="StudentDAO" class="com.wfg.pojo.StudentDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>



第六步:编写测试类 dao 要通过容器获取 

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentDAO studentDAO = context.getBean(StudentDAO.class);
studentDAO.save(new Student("李四", 12, new Timestamp(new Date().getTime()), true, "springhibernat"));
}