S2SH框架整合XML版(九)下

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: S2SH框架整合XML版(九)

三. Spring与Hibernate 进行整合(牵扯到数据库)


这两个整合,主要是将Hibernate的SessionFactory 的创建交给Spring,事务管理也交给Spring。 在dao层中引入HibernateTemplate 类进行。


三.一 Hibernate的jar包


基本包:

20190523190544320.png

c3p0 连接池包


20190523190857552.png


hibernate的日志包


20190523190922312.png


三.二 mysql 驱动包


20190523190959514.png


三.三 Spring的orm 包(去spring中找)


20190523191044888.png


有重复的jar包。


javassist-3.11.0.GA.jar (struts2里面)

javassist-3.22.0-GA.jar (hibernate 里面)

去掉低版本的。


三.四 配置Hibernate的User.hbm.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入相应的约束 -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--暂时不介绍具体的标签什么意思-->
<hibernate-mapping package="com.yjl.pojo">
  <!-- 具体的实体类 -->
  <class name="User" table="user">
    <!-- 主键 -->
    <id name="id" column="id">
                    <generator class="native"></generator>
                </id>
    <!-- 其余属性 -->
    <property name="name"></property>
    <property name="sex" ></property>
    <property name="age"></property>
  </class>
</hibernate-mapping>


三.五 配置Hibernate的hibernate.cfg.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入相应的结束 -->
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- 对节点暂时不做介绍 -->
<hibernate-configuration>
  <session-factory>
    <!-- 关于Hibernate的相应配置移动到Spring了。 -->
    <!-- 引入方言 -->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.format_sql">true</property>
    <!-- 引入相应的约束文件  ctrl点击时可以正确进入-->
    <mapping resource="com/yjl/pojo/User.hbm.xml"/>
  </session-factory>
</hibernate-configuration>


三.六 jdbc.properites 文件


jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=abc123


下面的一切,都是在applicationContext.xml 配置文件中进行的。


三.七 配置数据源 ,采用c3p0的方式


<!-- 引入配置文件  前面要加上classpath-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>


三.八 创建SessionFactory


<!-- 创建sessionFactory -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <!--指定hibernate配置文件的位置-->
    <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
  </bean>


三.九 创建HibernateTemplate


<!-- 创建Hibernate模板 -->
  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
    <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>


三.十 在userDao中引入hibernateTemplate


需要将userDao与HibernateTempldate 类进行相应的关联,在UserDaoImpl 类中采用setter 注入的方式进行关联。


所以, userDaoImpl 便需要进行相应的修改:


package com.yjl.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.orm.hibernate5.HibernateTemplate;
import com.yjl.dao.UserDao;
import com.yjl.pojo.User;
/**
 @author:yuejl
 @date: 2019年5月22日 下午8:04:43
 @Description 类的相关描述
*/
public class UserDaoImpl implements UserDao {
  private HibernateTemplate hibernateTemplate;
  @SuppressWarnings("unchecked")
  @Override
  public List<User> findAll() {
    System.out.println("执行了查询全部的方法");
    List<User> userList=new ArrayList<User>();
    // 采用hibernate查询的方式。
    String hql="from User";
    System.out.println("输出值为:"+hibernateTemplate);
    userList=(List<User>) hibernateTemplate.find(hql);
    return userList;
  }
  public HibernateTemplate getHibernateTemplate() {
    return hibernateTemplate;
  }
  public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
  }
}


需要改变一下 userDao 的bean 创建,setter注入hibernateTemplate 属性


<!-- 设置userDao类 -->
  <bean id="userDao" class="com.yjl.dao.impl.UserDaoImpl">
    <property name="hibernateTemplate" ref="hibernateTemplate"></property>
  </bean>


三.十一 重启服务器,进行验证


20190523192301196.png


说明,Hibernate 查询OK, Spring 与Hibernate 简单整合成功。 但,还没有结束。


三.十二 添加事务管理


<!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 配置事务 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>  
        <!--列举常见的方法形式-->
            <tx:method name="insert*" propagation="REQUIRED" />  
            <tx:method name="update*" propagation="REQUIRED" />  
            <tx:method name="edit*" propagation="REQUIRED" />  
            <tx:method name="save*" propagation="REQUIRED" />  
            <tx:method name="add*" propagation="REQUIRED" />  
            <tx:method name="new*" propagation="REQUIRED" />  
            <tx:method name="set*" propagation="REQUIRED" />  
            <tx:method name="remove*" propagation="REQUIRED" />  
            <tx:method name="delete*" propagation="REQUIRED" />  
            <tx:method name="change*" propagation="REQUIRED" />  
            <tx:method name="get*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="find*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="count*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="load*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="*" propagation="REQUIRED" read-only="true" />  
        </tx:attributes>
    </tx:advice>
    <!-- 配置aop -->
    <aop:config>
      <aop:pointcut expression="execution( * com.yjl.service.impl.*.*(..))" id="pointCut1"/>
      <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut1"/>
    </aop:config>


三.十三 在web.xml 中添加Session延迟加载OpenSessionInViewFilter


 <filter>  
    <filter-name>openSessionInViewFilter</filter-name>  
    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>  
    <init-param>  
      <param-name>singleSession</param-name>  
      <param-value>true</param-value>  
    </init-param>  
  </filter>  
   <filter-mapping>  
    <filter-name>openSessionInViewFilter</filter-name>  
    <url-pattern>*.action</url-pattern>  
  </filter-mapping>  


三.十四 在web.xml 上配置编码过滤器(放在struts2前面)


 <filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
  <filter-name>CharacterEncodingFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping>


至此,一个简单的S2SH 的整合便基本完成 了。 这只是xml 形式的,还有更简单的注解方式的。


四.所用jar包


20190523193236257.png


20190523193255360.png


共49个基本的。


谢谢!!!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
XML 存储 JavaScript
Dom4j框架解析XML
Dom4j框架解析XML
112 0
|
5月前
|
XML Java 数据格式
Spring框架第二章(基于XML管理bean)
Spring框架第二章(基于XML管理bean)
|
6月前
|
XML Java 数据库
在Spring框架中,XML配置事务
在Spring框架中,XML配置事务
|
6月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
|
6月前
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
|
XML 设计模式 安全
【Spring框架四】——Spring AOP 注解实现和xml方式实现1
【Spring框架四】——Spring AOP 注解实现和xml方式实现
145 0
|
6月前
|
XML JavaScript API
框架选修课之dom4j解析xml字符串实例
框架选修课之dom4j解析xml字符串实例
98 1
|
SQL XML Java
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
124 0
|
XML Java 数据格式
【Spring框架四】——Spring AOP 注解实现和xml方式实现2
【Spring框架四】——Spring AOP 注解实现和xml方式实现
112 0
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——struts.xml和web.xml配置