您的位置:首页 > 编程语言 > Java开发

Spring整合Hibernate用法总结

2012-12-22 17:13 295 查看
单独的Hibernate使用方法就不多说了,无非就是三类文件hibernate.cfg.xml、HibernateSessionFactory.java、*.hbm.xml,过程很简单,hibernate调用HibernateSessionFactory.java,然后他根据hibernate.cfg.xml创建session,session再根据*.hbm.xml操作对应DTO对象。spring的使用方法在最下面,下面是spring整合hibernate的用法总结:

一、spring整合hibernate.cfg.xml和HibernateSessionFactory.java

方法是通过applicationContext.xml配置。但没有整合*.hbm.xml哦

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
<!-- 配置数据源,这里为DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_database" />
<property name="username" value="root" />
<property name="password" value="123" />
</bean>
<!-- 配置session工场 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<!-- 设置数据库方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</prop>
<!-- 在控制台输出SQL语句 -->
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!-- 配置映射文件 -->
<property name="mappingResources">
<list>
<value>com/jwy/dto/UserLogin.hbm.xml
</value>
<value>com/jwy/dto/Specialty.hbm.xml
</value>
<value>com/jwy/dto/Course.hbm.xml</value>
<value>com/jwy/dto/StuUser.hbm.xml
</value>
<value>com/jwy/dto/StuCourse.hbm.xml
</value>
</list>
</property>
</bean>
<!-- 定义事务管理器 -->
<!---->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!--定义注释驱动-->
<tx:annotation-driven transaction-manager="transactionManager" />

<!--在此,配置实现类,因为引用上面的sessionFactory的bean -->
<bean id="userLoginDao" class="com.jwy.dao.UserLoginDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="specialtyDao" class="com.jwy.dao.SpecialtyDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="courseDao" class="com.jwy.dao.CourseDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="stuUserDao" class="com.jwy.dao.StuUserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!--配置控制反转对应的操作类,因为要引用到上面数据对象操作类 -->
<bean name="/userLogin" class="com.jwy.action.UserLoginAction">
<property name="userLoginDao" ref="userLoginDao" />
<property name="stuUserDao" ref="stuUserDao" />
<property name="specialtyDao" ref="specialtyDao" />
</bean>
<bean name="/reg" class="com.jwy.action.RegAction">
<property name="userLoginDao" ref="userLoginDao" />
<property name="specialtyDao" ref="specialtyDao" />
</bean>
<bean name="/stuUser" class="com.jwy.action.StuUserAction">
<property name="stuUserDao" ref="stuUserDao" />
<property name="courseDao" ref="courseDao" />
<property name="specialtyDao" ref="specialtyDao" />
</bean>

<bean name="/updatePwd" class="com.jwy.action.UpdatePwdAction">
<property name="userLoginDao" ref="userLoginDao" />
</bean>
<bean name="/specialty" class="com.jwy.action.SpecialtyAction">
<property name="specialtyDao" ref="specialtyDao" />
</bean>
<bean name="/course" class="com.jwy.action.CourseAction">
<property name="specialtyDao" ref="specialtyDao" />
<property name="courseDao" ref="courseDao" />
</bean>
<bean name="/statInfo" class="com.jwy.action.StatInfoAction">
<property name="specialtyDao" ref="specialtyDao" />
<property name="courseDao" ref="courseDao" />
</bean>
</beans>


二、spring整合后在实际的使用过程中用法

1、在实现类Dao中:(主要地方在事务申明、getHibernateTemplete()、getSession())

package com.jwy.dao;

import java.util.List;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.jwy.dto.Specialty;

public class SpecialtyDao extends HibernateDaoSupport implements ISpecialtyDao {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public List<Specialty> findByAll() {
List<Specialty> list = getHibernateTemplate().find("FROM Specialty");
return list;
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public Specialty findById(Integer id) {
Specialty specialty = (Specialty) getHibernateTemplate().get(Specialty.class, id);
return specialty;
}

@Override
@Transactional(propagation = Propagation.REQUIRED)
public void insert(Specialty specialty) {
getHibernateTemplate().save(specialty);
}

@Override
@Transactional(propagation = Propagation.REQUIRED)
public void updateIsFinish(Integer id) {
Query q = getSession().createQuery("UPDATE Specialty s SET s.isFinish=? WHERE s.id=?");
q.setBoolean(0, true);
q.setInteger(1, id);
q.executeUpdate();
}

@Override
@Transactional(propagation = Propagation.REQUIRED,readOnly=true)
public List<Specialty> findStuByAll() {
Query q = getSession().createQuery("FROM Specialty WHERE isFinish=false");
List<Specialty> list = q.list();
return list;
}
}

2..在使用Dao的业务逻辑类中,和平常使用一样

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

//使用BeanFactory管理
Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory beanFactory=new XmlBeanFactory(resource);
UserLoginAction userLoginAction=beanFactory.getBean("\userLoginAction");


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

//使用ApplicationContext接口管理bean
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
UserLoginAction userLoginAction=applicationContext.getBean("\userLoginAction");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: