概述

  Spring整合Hibernate有什么好处?

  1、由IOC容器来管理Hibernate的SessionFactory

  2、让Hibernate使用上Spring的声明式事务

整合步骤

  整合前准备:

  持久化类:

  1. @Entity
  2. public class Book
  3. {
  4. private Integer id;
  5. private String bookName;
  6. private String isbn;
  7. private int price;
  8. private int stock;
  9. public Integer getId()
  10. {
  11. return id;
  12. }
  13. public void setId(Integer id)
  14. {
  15. this.id = id;
  16. }
  17. public String getBookName()
  18. {
  19. return bookName;
  20. }
  21. public void setBookName(String bookName)
  22. {
  23. this.bookName = bookName;
  24. }
  25. public String getIsbn()
  26. {
  27. return isbn;
  28. }
  29. public void setIsbn(String isbn)
  30. {
  31. this.isbn = isbn;
  32. }
  33. public int getPrice()
  34. {
  35. return price;
  36. }
  37. public void setPrice(int price)
  38. {
  39. this.price = price;
  40. }
  41. public int getStock()
  42. {
  43. return stock;
  44. }
  45. public void setStock(int stock)
  46. {
  47. this.stock = stock;
  48. }
  49. public Book(Integer id, String bookName, String isbn, int price, int stock)
  50. {
  51. super();
  52. this.id = id;
  53. this.bookName = bookName;
  54. this.isbn = isbn;
  55. this.price = price;
  56. this.stock = stock;
  57. }
  58. }

Dao层:

  1. public interface BookDao
  2. {
  3. public String findBookById(int id);
  4.  
  5. public void saveBook(Book book);
  6. }

DaoImpl:

  1. @Repository
  2. public class BookDaoImpl implements BookDao
  3. {
  4. @Autowired
  5. private SessionFactory sessionFactory;
  6.  
  7. //获取和当前线程绑定的Seesion
  8. private Session getSession()
  9. {
  10. return sessionFactory.getCurrentSession();
  11. }
  12. public String findBookById(int id)
  13. {
  14. String hql="SELECT bookName from Book where id=?";
  15. Query query=getSession().createQuery(hql).setInteger(0, id);
  16. String str= query.uniqueResult().toString();
  17. return str;
  18. }
  19. public void saveBook(Book book)
  20. {
  21. getSession().save(book);
  22. }
  23. }

Service层:

  1. public interface BookService
  2. {
  3. public String findBookById(int id);
  4. public void saveBook(Book book);
  5. }

ServiceImpl:

  1. @Service
  2. public class BookServiceImpl implements BookService
  3. {
  4. @Autowired
  5. private BookDao bookDao;
  6. public String findBookById(int id)
  7. {
  8. return bookDao.findBookById(id);
  9. }
  10. public void saveBook(Book book)
  11. {
  12. bookDao.saveBook(book);
  13.  
  14. }
  15. }

1、加入Hibernate

  • 加入hibernate jar包
  • 添加Hibernate的配置文件:hibernate.cfg.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 配置Hibernate的基本属性 -->
  8. <!-- 1.数据源配置到IOC容器中 -->
  9. <!-- 2.关联的.hbm.xml也在IOC容器配置SessionFactory实例 -->
  10. <!-- 3.配置Hibernate的基本属性:方言,SQL显示及格式化,生成数据表的策略以及二级缓存 -->
  11. <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
  12. <property name="hibernate.show_sql">true</property>
  13. <property name="hbm2ddl.auto">update</property>
  14. </session-factory>
  15. </hibernate-configuration>
  • 编写持久化类对应的.hbm.xml文件
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2016-3-15 16:30:05 by Hibernate Tools 3.4.0.CR1 -->
  5. <hibernate-mapping>
  6. <class name="com.demo.ssm.po.Book" table="BOOK">
  7. <id name="id" type="java.lang.Integer">
  8. <column name="ID" />
  9. <generator class="native" />
  10. </id>
  11. <property name="bookName" type="java.lang.String">
  12. <column name="BOOK_NAME" />
  13. </property>
  14. <property name="isbn" type="java.lang.String">
  15. <column name="ISBN" />
  16. </property>
  17. <property name="price" type="int">
  18. <column name="PRICE" />
  19. </property>
  20. <property name="stock" type="int">
  21. <column name="STOCK" />
  22. </property>
  23. </class>
  24. </hibernate-mapping>

2、加入Spring

  • 加入spring jar包
  • 加入Spring配置文件
  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:tx="http://www.springframework.org/schema/tx"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
  11. <context:component-scan base-package="com.demo.ssm"></context:component-scan>
  12. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  13. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  14. <property name="url" value="jdbc:mysql://localhost/test" />
  15. <property name="username" value="root"></property>
  16. <property name="password" value="281889"></property>
  17. </bean>
  18. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="false">
  19. <!-- 注入datasource,给sessionfactoryBean内setdatasource提供数据源 -->
  20. <property name="dataSource" ref="dataSource" />
  21. <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
  22. <!-- //加载实体类的映射文件位置及名称 -->
  23. <property name="mappingLocations" value="classpath:com/demo/ssm/po/*.hbm.xml"></property>
  24. </bean>
  25.  
  26. <!-- 配置Spring声明式事务 -->
  27. <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  28. <property name="sessionFactory" ref="sessionFactory"></property>
  29. </bean>
  30. <!-- 配置事务事务属性 -->
  31. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  32. <tx:attributes>
  33. <tx:method name="get*" read-only="true"/>
  34. <tx:method name="*"/>
  35. </tx:attributes>
  36. </tx:advice>
  37. <!-- 配置事务切点,并把切点和事务属性关联起来 -->
  38. <aop:config>
  39. <aop:pointcut expression="execution(* com.demo.ssm.daoImpl.*.*(..))" id="txPointcut"/>
  40. <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
  41. </aop:config>
  42. </beans>

 3、编写测试类

  1. public class BookDaoImplTest
  2. {
  3. private ApplicationContext context=null;
  4. private BookService bookService=null;
  5.  
  6. {
  7. context= new ClassPathXmlApplicationContext("applicationContext.xml");
  8. bookService=context.getBean(BookService.class);
  9. }
  10. @Test
  11. public void test()
  12. {
  13. DataSource dataSource=(DataSource) context.getBean(DataSource.class);
  14. System.out.println(dataSource);
  15. }
  16. @Test
  17. public void test2()
  18. {
  19. String bookName=bookService.findBookById(1);
  20. System.out.println(bookName);
  21. }
  22.  
  23. @Test
  24. public void test3()
  25. {
  26. bookService.saveBook(new Book(2, "android源码分析", "1002", 45, 10));
  27. }
  28. }

Spring整合Hibernate(转)的更多相关文章

  1. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  2. spring整合hibernate的详细步骤

    Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...

  3. spring整合hibernate

    spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...

  4. spring 整合hibernate

    1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...

  5. Spring 整合 Hibernate

    Spring 整合 Hibernate •Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA. •Spring 对这些 OR ...

  6. 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能

    1.1 问题 使用Spring整合Hibernate,并实现资费表的增.删.改.查. 1.2 方案 Spring整合Hibernate的步骤: 1.3 步骤 实现此案例需要按照如下步骤进行. 采用的环 ...

  7. Spring整合Hibernate详细步骤

    阅读目录 一.概述 二.整合步骤 回到顶部 一.概述 Spring整合Hibernate有什么好处? 1.由IOC容器来管理Hibernate的SessionFactory 2.让Hibernate使 ...

  8. SSH整合之spring整合hibernate

    SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...

  9. 【Spring】Spring系列6之Spring整合Hibernate

    6.Spring整合Hibernate 6.1.准备工作 6.2.示例 com.xcloud.entities.book com.xcloud.dao.book com.xcloud.service. ...

  10. 3、Spring整合Hibernate

    经过前面的两节分析:1.Hibernate之生成SessionFactory源码追踪 和 2.Spring的LocalSessionFactoryBean创建过程源码分析 .我们可以得到这样一个结论, ...

随机推荐

  1. webrtc 音频一点相关知识

    采样频率:  44.1kHz ,它的意思是每秒取样44100次   .8kHz    8000次,  16kHz   160000次 比特率:  比特率是大家常听说的一个名词,数码录音一般使用16比特 ...

  2. RAD Studio August 2018 Roadmap

    路线图: https://community.embarcadero.com/article/news/16638-rad-studio-august-2018-roadmap 路线图评论: http ...

  3. 初玩OpenWRT之编译TP-Link WR841N V8固件

    0x00 安装依赖 安装git以下载OpenWrt源码.安装编译工具以进行交叉编译: sudo apt-get update sudo apt-get install build-essential ...

  4. FCC JS基础算法题(6):Truncate a string(截断字符串)

    先看一下题目描述: 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示.切记,插入到字符串尾部的三个点号也会计入字符串的长度.但是,如果指定的参数num小于或等于3,则添加的三个点号不 ...

  5. day12作业

  6. nginx 之 proxy_pass详解

    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径:如果没有/,表示相对路径,把匹配的路径部分也给代理走.     假设下面四种情况分别用 h ...

  7. 百练6255-单词反转-2016正式B题

    百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问   B:单词翻转 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个 ...

  8. vue查缺补漏题

    一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...

  9. windows apache "The requested operation has failed" 启动失败

    找到失败原因,进入cmd(win+r快捷键,输入cmd)命令行下 进入到你的apache  bin目录下: 每个人错误可能不同,根据自己问题去相应改

  10. 关于 transparent rgba display:none; opacity visiblity 关于em

    关于 transparent  rgba   display:none; opacity   visiblity   display 之后不会占位. 其余都会占位 opacity 还会继承,子元素也会 ...