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. AOP Schema配置

    AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封装.继承和 ...

  2. NOI导刊 2009 提高二

    开灯 题目大意 对编号为\([i \times a]\)的灯进行操作,找出操作数为奇数的那一个 题目分析 难度: 入门 因为看到操作数为奇数,因此直接进行位运算,做亦或和 打砖块 题目分析 第一眼看上 ...

  3. 在python中引用jar包

    在本文中,首先创建一个maven项目,然后打包成jar包,在python中调用jar包,执行java类方法. 1.在eclipse中创建maven项目 我这里创建一个普通java项目,择选择 “mav ...

  4. Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...

  5. HIVE之正则化详解

    有大神写的很好了,我借花献佛,有兴趣,看链接,在此不再赘述.想要学习Hive正则表达式重点应该是正则表达式的表示方式,只有正则表达式使用溜了,hive正则那就是小case. 附参考博文: https: ...

  6. JS之replace

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. centos7 搭建svn服务器&客户端的访问&备份迁移

    当今用于版本控制的软件程序主要的有svn和git,其它软件咱不熟悉,今天记录下搭建svn服务器和svn客户端使用: 使用环境:虚拟机为centos7系统,svn服务器安装在centos7系统平台上,s ...

  8. STL标准库-hash

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 hash的结构图如下图 oject通过hashfunc转换成hashcode然后插入到相应篮子中 hash同rb_tree是一种 ...

  9. L194

    For many of us, asking for help is it difficult concept. We may feel as if we are admitting a weakne ...

  10. 虚函数不应该是inlined(More Effective C++ 笔记)

    在实际运行中,虚函数所需的代价与内联函数有关. 实际上虚函数不能是内联的. 这是因为“内联”是指“在编译期间用被调用的函数体本身来代替函数调用的指令,” 但是虚函数的“虚”是指“直到运行时才能知道要调 ...