Spring整合Hibernate用法总结

单独的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");












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH整合示例(详情见我博客专栏)之前的博客我们总结spring基础、spring分别整合struts2、hibernate、mybatis等,今天我们来同时整合下 struts、springhibernate,也就是所谓的 ssh 。 整合流程: 1 首先整合springhibernate,这次我们在spring 中配置bean使用注解的方式 ,hibernate实体映射关系也使用注解的方式,配置完毕后用简单方法测试下hibernate是否整合成功。 a 加入支持:添加 spring核心包、hibernate 3.6 包、 spring整合hibernate包 , 在src下建立applicationContext.xml (先建立src下便于测试hibernate)。 b 编写实体类,加入hibernate注解,编写方法类测试类,在applicationContext.xml中添加hibernate模板类配置以及包扫描语句 。在类中添加spring bean注解。 c 测试类中 主动解析applicationContext.xml ,获取bean 执行dao层方法进行测试 2 将struts2 整合进去, 这次在struts.xml中我们使用通配符的方式配置action。 a 加入支持 : 添加struts2.3.15 必需包 以及 struts json包(ajax要用到),spring整合struts2包,spring web 包,在src目录下建立struts.xml,复制头文件进去。将applicationContext.xml移到WEB-INF目录下。web容器中(web.xml)中添加struts2 filter以及spring 监听器。 b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) c 编写action类、页面进行测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值