Spring整合Hibernate(转)
概述
Spring整合Hibernate有什么好处?
1、由IOC容器来管理Hibernate的SessionFactory
2、让Hibernate使用上Spring的声明式事务
整合步骤
整合前准备:
持久化类:
- @Entity
- public class Book
- {
- private Integer id;
- private String bookName;
- private String isbn;
- private int price;
- private int stock;
- public Integer getId()
- {
- return id;
- }
- public void setId(Integer id)
- {
- this.id = id;
- }
- public String getBookName()
- {
- return bookName;
- }
- public void setBookName(String bookName)
- {
- this.bookName = bookName;
- }
- public String getIsbn()
- {
- return isbn;
- }
- public void setIsbn(String isbn)
- {
- this.isbn = isbn;
- }
- public int getPrice()
- {
- return price;
- }
- public void setPrice(int price)
- {
- this.price = price;
- }
- public int getStock()
- {
- return stock;
- }
- public void setStock(int stock)
- {
- this.stock = stock;
- }
- public Book(Integer id, String bookName, String isbn, int price, int stock)
- {
- super();
- this.id = id;
- this.bookName = bookName;
- this.isbn = isbn;
- this.price = price;
- this.stock = stock;
- }
- }
Dao层:
- public interface BookDao
- {
- public String findBookById(int id);
- public void saveBook(Book book);
- }
DaoImpl:
- @Repository
- public class BookDaoImpl implements BookDao
- {
- @Autowired
- private SessionFactory sessionFactory;
- //获取和当前线程绑定的Seesion
- private Session getSession()
- {
- return sessionFactory.getCurrentSession();
- }
- public String findBookById(int id)
- {
- String hql="SELECT bookName from Book where id=?";
- Query query=getSession().createQuery(hql).setInteger(0, id);
- String str= query.uniqueResult().toString();
- return str;
- }
- public void saveBook(Book book)
- {
- getSession().save(book);
- }
- }
Service层:
- public interface BookService
- {
- public String findBookById(int id);
- public void saveBook(Book book);
- }
ServiceImpl:
- @Service
- public class BookServiceImpl implements BookService
- {
- @Autowired
- private BookDao bookDao;
- public String findBookById(int id)
- {
- return bookDao.findBookById(id);
- }
- public void saveBook(Book book)
- {
- bookDao.saveBook(book);
- }
- }
1、加入Hibernate
- 加入hibernate jar包
- 添加Hibernate的配置文件:hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 配置Hibernate的基本属性 -->
- <!-- 1.数据源配置到IOC容器中 -->
- <!-- 2.关联的.hbm.xml也在IOC容器配置SessionFactory实例 -->
- <!-- 3.配置Hibernate的基本属性:方言,SQL显示及格式化,生成数据表的策略以及二级缓存 -->
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <property name="hibernate.show_sql">true</property>
- <property name="hbm2ddl.auto">update</property>
- </session-factory>
- </hibernate-configuration>
- 编写持久化类对应的.hbm.xml文件
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!-- Generated 2016-3-15 16:30:05 by Hibernate Tools 3.4.0.CR1 -->
- <hibernate-mapping>
- <class name="com.demo.ssm.po.Book" table="BOOK">
- <id name="id" type="java.lang.Integer">
- <column name="ID" />
- <generator class="native" />
- </id>
- <property name="bookName" type="java.lang.String">
- <column name="BOOK_NAME" />
- </property>
- <property name="isbn" type="java.lang.String">
- <column name="ISBN" />
- </property>
- <property name="price" type="int">
- <column name="PRICE" />
- </property>
- <property name="stock" type="int">
- <column name="STOCK" />
- </property>
- </class>
- </hibernate-mapping>
2、加入Spring
- 加入spring jar包
- 加入Spring配置文件
- <?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"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
- <context:component-scan base-package="com.demo.ssm"></context:component-scan>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost/test" />
- <property name="username" value="root"></property>
- <property name="password" value="281889"></property>
- </bean>
- <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="false">
- <!-- 注入datasource,给sessionfactoryBean内setdatasource提供数据源 -->
- <property name="dataSource" ref="dataSource" />
- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
- <!-- //加载实体类的映射文件位置及名称 -->
- <property name="mappingLocations" value="classpath:com/demo/ssm/po/*.hbm.xml"></property>
- </bean>
- <!-- 配置Spring声明式事务 -->
- <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- 配置事务事务属性 -->
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="get*" read-only="true"/>
- <tx:method name="*"/>
- </tx:attributes>
- </tx:advice>
- <!-- 配置事务切点,并把切点和事务属性关联起来 -->
- <aop:config>
- <aop:pointcut expression="execution(* com.demo.ssm.daoImpl.*.*(..))" id="txPointcut"/>
- <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
- </aop:config>
- </beans>
3、编写测试类
- public class BookDaoImplTest
- {
- private ApplicationContext context=null;
- private BookService bookService=null;
- {
- context= new ClassPathXmlApplicationContext("applicationContext.xml");
- bookService=context.getBean(BookService.class);
- }
- @Test
- public void test()
- {
- DataSource dataSource=(DataSource) context.getBean(DataSource.class);
- System.out.println(dataSource);
- }
- @Test
- public void test2()
- {
- String bookName=bookService.findBookById(1);
- System.out.println(bookName);
- }
- @Test
- public void test3()
- {
- bookService.saveBook(new Book(2, "android源码分析", "1002", 45, 10));
- }
- }
Spring整合Hibernate(转)的更多相关文章
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...
- spring整合hibernate的详细步骤
Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...
- spring整合hibernate
spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...
- spring 整合hibernate
1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...
- Spring 整合 Hibernate
Spring 整合 Hibernate •Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA. •Spring 对这些 OR ...
- 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能
1.1 问题 使用Spring整合Hibernate,并实现资费表的增.删.改.查. 1.2 方案 Spring整合Hibernate的步骤: 1.3 步骤 实现此案例需要按照如下步骤进行. 采用的环 ...
- Spring整合Hibernate详细步骤
阅读目录 一.概述 二.整合步骤 回到顶部 一.概述 Spring整合Hibernate有什么好处? 1.由IOC容器来管理Hibernate的SessionFactory 2.让Hibernate使 ...
- SSH整合之spring整合hibernate
SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...
- 【Spring】Spring系列6之Spring整合Hibernate
6.Spring整合Hibernate 6.1.准备工作 6.2.示例 com.xcloud.entities.book com.xcloud.dao.book com.xcloud.service. ...
- 3、Spring整合Hibernate
经过前面的两节分析:1.Hibernate之生成SessionFactory源码追踪 和 2.Spring的LocalSessionFactoryBean创建过程源码分析 .我们可以得到这样一个结论, ...
随机推荐
- webrtc 音频一点相关知识
采样频率: 44.1kHz ,它的意思是每秒取样44100次 .8kHz 8000次, 16kHz 160000次 比特率: 比特率是大家常听说的一个名词,数码录音一般使用16比特 ...
- RAD Studio August 2018 Roadmap
路线图: https://community.embarcadero.com/article/news/16638-rad-studio-august-2018-roadmap 路线图评论: http ...
- 初玩OpenWRT之编译TP-Link WR841N V8固件
0x00 安装依赖 安装git以下载OpenWrt源码.安装编译工具以进行交叉编译: sudo apt-get update sudo apt-get install build-essential ...
- FCC JS基础算法题(6):Truncate a string(截断字符串)
先看一下题目描述: 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示.切记,插入到字符串尾部的三个点号也会计入字符串的长度.但是,如果指定的参数num小于或等于3,则添加的三个点号不 ...
- day12作业
- nginx 之 proxy_pass详解
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径:如果没有/,表示相对路径,把匹配的路径部分也给代理走. 假设下面四种情况分别用 h ...
- 百练6255-单词反转-2016正式B题
百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问 B:单词翻转 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个 ...
- vue查缺补漏题
一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...
- windows apache "The requested operation has failed" 启动失败
找到失败原因,进入cmd(win+r快捷键,输入cmd)命令行下 进入到你的apache bin目录下: 每个人错误可能不同,根据自己问题去相应改
- 关于 transparent rgba display:none; opacity visiblity 关于em
关于 transparent rgba display:none; opacity visiblity display 之后不会占位. 其余都会占位 opacity 还会继承,子元素也会 ...