ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring5整合Hibernate5

2019-06-21 16:01:21  阅读:306  来源: 互联网

标签:Hibernate5 spring springframework book 整合 org com public Spring5


一、概述

  Spring整合Hibernate有什么好处?      1、由IOC容器来管理Hibernate的SessionFactory      2、让Hibernate使用上Spring的声明式事务

二、整合步骤:

  步骤一:导包     创建Maven项目SpringHibernate,并导入数据库驱动包、Hibernate开发包以及Spring开发包,完成后项目的pom.xml文件内容如下:    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-context</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-core</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-beans</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-web --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-web</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-webmvc</artifactId>     <version>5.1.1.RELEASE</version> </dependency>     <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-aop</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-tx</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-jdbc</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-aspects</artifactId>     <version>5.1.1.RELEASE</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency>     <groupId>org.hibernate</groupId>     <artifactId>hibernate-core</artifactId>     <version>5.3.6.Final</version> </dependency>         <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 --> <dependency>     <groupId>org.hibernate</groupId>     <artifactId>hibernate-c3p0</artifactId>     <version>5.3.6.Final</version> </dependency>     <dependency>   <groupId>com.oracle</groupId>   <artifactId>ojdbc6</artifactId>   <version>11.2.0.4</version> </dependency>     <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-orm</artifactId>     <version>5.1.1.RELEASE</version> </dependency> 步骤二:创建Hibernate配置文件    <session-factory>         <!-- 配置Hibernate的基本属性:方言,SQL显示及格式化,生成数据表的策略以及二级缓存 -->         <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>         <property name="hibernate.show_sql">true</property>         <property name="hibernate.format_sql">true</property>         <property name="hbm2ddl.auto">update</property>     </session-factory>   注意:   <!-- 1.数据源配置到Spring的IOC容器中 -->         <!-- 2.关联的.hbm.xml也在IOC容器配置SessionFactory实例 --> 步骤三:创建实体类及其映射文件:             package com.cn.pojo;    public class Book {      private Integer id;      private String bookName;      private String isbn;      private int price;      private int stock;         ...省略set/get方法...   } Book.hbm.xml文件   <hibernate-mapping>     <class name="com.cn.pojo.Book" table="TB_BOOK">         <id name="id" type="java.lang.Integer">             <column name="ID" />             <generator class="native" />         </id>         <property name="bookName" type="java.lang.String">             <column name="BOOKNAME" />         </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>   步骤四:创建DAO层、Service层   1、DAO层接口:       package com.cn.dao;        import java.util.List;        import com.cn.pojo.Book;        public interface IBookDao {           public List<Book> findAll();           public String findBookById(int id);           public void save(Book book);           public void update(Book book);           public void delete(int id);       }   2、DAO层接口实现类:        package com.cn.dao;       public class BookDaoImpl implements IBookDao {        private SessionFactory sessionFactory;        public SessionFactory getSessionFactory() {           return sessionFactory;         }        public void setSessionFactory(SessionFactory sessionFactory) {           this.sessionFactory = sessionFactory;        }     //获取和当前线程绑定的Seesion     private Session getSession()     {         return sessionFactory.getCurrentSession();     }     @Override     public List<Book> findAll() {         String hql = "from Book";         Query<Book> query = this.getSession().createQuery(hql);         return query.list();     }     @Override     public String findBookById(int id) {         // TODO Auto-generated method stub         return null;     }     @Override     public void save(Book book) {         this.getSession().save(book);     }     @Override     public void update(Book book) {         // TODO Auto-generated method stub     }     @Override     public void delete(int id) {         // TODO Auto-generated method stub     } } 3、服务层接口:   public interface IBookService {          public String findBookById(int id);          public void saveBook(Book book);          public List<Book> findAll();    } 4、服务层实现类:   public class BookServiceImpl implements IBookService {      private IBookDao dao;      public IBookDao getDao() {           return dao;      }      public void setDao(IBookDao dao) {           this.dao = dao;      }      @Override      public String findBookById(int id) {           return null;      }      @Override      public void saveBook(Book book) {             dao.save(book);      }      @Override      public List<Book> findAll() {           return dao.findAll();      } } 步骤五:创建Spring配置文件   1、applicationContext.xml文件:        <!-- 配置数据源 -->     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">                 <!-- 配置连接参数 -->          <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"/>          <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>          <property name="user" value="scott"/>          <property name="password" value="root"/>                   <!-- 配置连接池 -->          <property name="initialPoolSize" value="3"/>          <property name="maxPoolSize" value="10"/>          <property name="minPoolSize" value="1"/>          <property name="acquireIncrement" value="3"/>          <property name="maxIdleTime" value="60"/>     </bean>         <!-- 配置SessionFactory -->     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.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/cn/pojo/*.hbm.xml"/>     </bean>         <!-- 导入外部的配置文件 -->     <import resource="classpath:applicationContext-beans.xml"/>         <!-- 配置Spring声明式事务,采用AOP形式切入 -->     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"/>     </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 proxy-target-class="true">       <aop:pointcut expression="execution(* com.cn.dao.*.*(..))" id="txPointcut"/>       <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>     </aop:config>   2、applicationContext-beans.xml       <bean id="bookDao" class="com.cn.dao.BookDaoImpl">          <property name="sessionFactory" ref="sessionFactory"></property>       </bean>           <bean id="bookService" class="com.cn.dao.BookServiceImpl">          <property name="dao" ref="bookDao"></property>       </bean>   测试:           public class Test {             private static  String conf = "applicationContext.xml";             private static ApplicationContext context = null;             private static IBookService bookService = null;          public static void main(String[] args) {           context = new ClassPathXmlApplicationContext(conf);           bookService = context.getBean(BookServiceImpl.class);           Book book = new Book();           book.setId(2);           book.setBookName("Java程序设计");           book.setPrice(48);           book.setStock(78);           book.setIsbn("ISBN-001-0980");                      bookService.saveBook(book);      } }            

标签:Hibernate5,spring,springframework,book,整合,org,com,public,Spring5
来源: https://www.cnblogs.com/lone5wolf/p/11065073.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有