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哦
二、spring整合后在实际的使用过程中用法
1、在实现类Dao中:(主要地方在事务申明、getHibernateTemplete()、getSession())
2..在使用Dao的业务逻辑类中,和平常使用一样
一、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");
相关文章推荐
- spring整合hibernate,jar包冲突错误信息总结
- spring整合hibernate,jar包冲突错误信息总结
- hibernate和spring整合总结
- Spring整合Hibernate总结
- Spring 和 Hibernate整合总结
- spring整合hibernate,jar包冲突错误信息总结(2)
- hibernate和spring整合总结
- spring4学习总结以及spring整合hibernate
- spring整合hibernate错误总结
- Spring学习总结8(整合Hibernate)
- struts hibernate spring整合总结
- Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2 整合总结
- 总结篇-Spring-SpringMVC-Hibernate-jpa整合
- Maven整合Spring,Spring mvc4.1.6,Hibernate4.3.10项目搭建总结
- mvn+spring 4+hibernate 5整合
- 一个简单的Springmvc Spring Hibernate 整合的案例
- Spring中HibernateCallback的用法(转)
- java Spring-3.2.0+Struts-2.3.4+Hibernate-4.1.6整合
- Spring 整合 Hibernate 与 Spring 整合 Struts1.x
- Spring+SpringMVC+Hibernate三大框架整合