spring整合hibernate:
1.sessionFactory只需要一个就可以了,单例,适合spring管理;
2.HIbernate中的SessionFactory是接口;spring中实现了这个接口,
 class是:org.springframework.orm.hibernate3.LocalSessionFactoryBean,具体是怎么代码实现这个接口的不知道;
   这里使用支持hibernate注解的class,org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean,(是extends  LocalSessionFactoryBean的)
3.整合transaction的管理
 
引入hibernate的jar包:
 
一、初步整合,没有transaction的管理:                  
beans.xml:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  10. http://www.springframework.org/schema/aop
  11. http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
  12.  
  13. <context:annotation-config />
  14. <context:component-scan base-package="com.cy"/>
  15.  
  16. <!-- 如果下面使用到了占位符的方式,请在locations下面去找 -->
  17. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  18. <property name="locations">
  19. <value>classpath:jdbc.properties</value>
  20. </property>
  21. </bean>
  22.  
  23. <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
  24. <property name="driverClassName" value="${jdbc.driverClassName}"/>
  25. <property name="url" value="${jdbc.url}"/>
  26. <property name="username" value="${jdbc.username}"/>
  27. <property name="password" value="${jdbc.password}"/>
  28. </bean>
  29.  
  30. <!-- 初始化SessionFactory
  31. annotatedClasses : 接收对那些类做了注解
  32. -->
  33. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  34. <property name="dataSource" ref="dataSource" />
  35. <property name="annotatedClasses">
  36. <list>
  37. <value>com.cy.model.User</value>
  38. </list>
  39. </property>
  40. <property name="hibernateProperties">
  41. <props>
  42. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  43. <prop key="hibernate.show_sql">true</prop>
  44. </props>
  45. </property>
  46. </bean>
  47.  
  48. </beans>

User.java实体类:

  1. package com.cy.model;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6.  
  7. @Entity
  8. public class User {
  9. private int id;
  10. private String username;
  11. private String password;
  12.  
  13. @Id
  14. @GeneratedValue
  15. public int getId() {
  16. return id;
  17. }
  18. public void setId(int id) {
  19. this.id = id;
  20. }
  21.   ......
  22. .......
  23. }

User实体对应数据库中的表:

dao实现类UserDAOImpl.java:

  1. package com.cy.dao.impl;
  2. import javax.annotation.Resource;
  3. import org.hibernate.Session;
  4. import org.hibernate.SessionFactory;
  5. import org.springframework.stereotype.Component;
  6.  
  7. @Component
  8. public class UserDAOImpl implements UserDAO {
  9.  
  10. @Resource
  11. private SessionFactory sessionFactory;
  12.  
  13. public void save(User user) {
  14. Session s = sessionFactory.openSession(); //这里写getCurrentSession不行 为什么--这里和transaction的管理有关
  15. s.beginTransaction();
  16. s.save(user);
  17. s.getTransaction().commit();
  18. System.out.println("user saved!");
  19. }
  20.  
  21. }

UserService.java:

  1. package com.cy.service;
  2.  
  3. import javax.annotation.Resource;
  4.  
  5. import org.springframework.stereotype.Component;
  6.  
  7. import com.cy.dao.UserDAO;
  8. import com.cy.model.User;
  9.  
  10. @Component("userService")
  11. public class UserService {
  12.  
  13. @Resource
  14. private UserDAO userDAO;
  15.  
  16. public void init() {
  17. System.out.println("init");
  18. }
  19.  
  20. public void add(User user) {
  21. userDAO.save(user);
  22. }
  23.  
  24. public UserDAO getUserDAO() {
  25. return userDAO;
  26. }
  27.  
  28. public void setUserDAO( UserDAO userDAO) {
  29. this.userDAO = userDAO;
  30. }
  31.  
  32. public void destroy() {
  33. System.out.println("destroy");
  34. }
  35. }

测试代码:

  1. package com.cy.service;
  2.  
  3. import org.junit.Test;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. import com.cy.model.User;
  7.  
  8. public class UserServiceTest {
  9.  
  10. @Test
  11. public void testAdd() throws Exception {
  12. ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  13. UserService service = (UserService)ctx.getBean("userService");
  14. System.out.println(service.getClass());
  15. service.add(new User());
  16. ctx.destroy();
  17. }
  18. }

console:

二、

 
 
 
 
 

马士兵Spring-hibernate整合的更多相关文章

  1. spring+hibernate整合:报错org.hibernate.HibernateException: No Session found for current thread

    spring+hibernate整合:报错信息如下 org.hibernate.HibernateException: No Session found for current thread at o ...

  2. SpringMVC+Spring+Hibernate整合开发

    最近突然想认真研究下java web常用框架,虽然现在一直在用,但实现的整体流程不是很了解,就在网上搜索资料,尝试自己搭建,以下是自己的搭建及测试过程. 一.准备工作: 1/安装并配置java运行环境 ...

  3. Struts2+Spring+Hibernate整合开发(Maven多模块搭建)

    Struts2+Spring+Hibernate整合开发(Maven多模块搭建) 0.项目结构 Struts2:web层 Spring:对象的容器 Hibernate:数据库持久化操作 1.父模块导入 ...

  4. 笔记58 Spring+Hibernate整合(一)

    Spring+Hibernate整合 一.整合思路 使DAO继承HibernateTemplate这个类 HibernateTemplate这个类提供了setSessionFactory()方法用于注 ...

  5. MyEclipse下Spring+Hibernate整合

    目前,SSH(Struts+Spring+Hibernate)是Web开发的一种常用框架组合,Struts实现了MVC,Hibernate实现了关系对象映射,Spring实现了基于Bean的配置管理. ...

  6. Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置

    Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservlet ...

  7. Struts+Spring+Hibernate整合入门详解

    Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者:  Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念       St ...

  8. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

  9. 马士兵 spring 视频笔记

    课程内容 1.       面向接口(抽象)编程的概念与好处 2.       IOC/DI的概念与好处 a)       inversion of control b)       dependen ...

  10. Struts+Spring+Hibernate整合

    这段笔记三两年前写的,一直因为一些琐事,或者搞忘记了,没有发.今天偶然翻出了它,就和大家一起分享下吧. 1.导入jar包 Struts的jar包: Spring的jar包: Hibernate的jar ...

随机推荐

  1. 请问使用jmeter在tcp取样器测试中服务器名称或ip,端口可以填变量值吗?

    请问使用jmeter在tcp取样器测试中服务器名称或ip,端口可以填变量值吗?

  2. R中的sample函数

    今天介绍一些运算函数,它们的使用很简单,没有什么难度,但是也会用的着. 在医学统计学或者流行病学里的现场调查.样本选择经常会提到一个词:随机抽样.随机抽样是为了保证各比较组之间均衡性的一个很重要的方法 ...

  3. BZOJ 3064 CPU监控

    题目链接:CPU监控 学习一番线段树的历史标记- 这道题就是区间加法,区间赋值,要询问区间最大值 和 区间历史最大值的最大值. 然后这种题就是在现有标记的基础上多弄一套标记,维护这个点出现过的最大的标 ...

  4. 雷林鹏分享:Ruby File 类和方法

    Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) ...

  5. 雷林鹏分享:Ruby XML, XSLT 和 XPath 教程

    Ruby XML, XSLT 和 XPath 教程 什么是 XML ? XML 指可扩展标记语言(eXtensible Markup Language). 可扩展标记语言,标准通用标记语言的子集,一种 ...

  6. django使用bootstrap快速美化 admin后台

    使用django-admin-bootstrappe快速美化后台 两步: 1.pip install django-admin-bootstrapped  安装应用 2.在setting.py里面添加 ...

  7. Android Studio 中实现高德定位并获取相应信息

    Android开发项目时常常会遇到定位这个功能,所以写了这篇博客,今天主要讲的高德地图的定位并获取相应信息. 首先导入高德的jar包 选中jar包右键点击  Add As Library, 在buil ...

  8. UVALive-5095 Transportation (最小费用流+拆边)

    题目大意:有n个点,m条单向边.要运k单位货物从1到n,但是每条道路上都有一个参数ai,表示经这条路运送x个单位货物需要花费ai*x*x个单位的钱.求最小费用. 题目分析:拆边.例如:u到v的容量为5 ...

  9. Android 五种存储方式个人总结

    一 . 文件存储 FileOutputStream out = openFileOutput("data",Context.MODE_PRIVATE); BufferedWrite ...

  10. mac下安装apache tomcat

    目录 一. 默认版: 二. 自定义下载配置版: ———————————————————————正文—————————————————————————— 一. 默认版: ##一.mac 自带了apach ...