关于spring整合前两大框架的一些小问题04

关于spring中对延迟关闭session的配置,以及工具类BaseDao和BaseAction

一、HibernateTemplate执行查询时的一些小问题

1.当两个PO类的关系是多对一时:

  我们知道在多对一关系中,查询总是会先查询“一”的一方,而一的一方中是含有集合的,一谈到集合就不得不考虑关于hibernate中集合的加载策略,

集合的加载策略默认是懒加载的,我们可以自己手动的去配guanlu置这个加载策略!

  然而我们这里讨论的是:当查询“一”的一方的数据完毕时session就会被关闭,而集合中的数据并没有加载所以在页面想获取时是获取不到的,我们想要懒加载能加载到数据,所以必须要延迟关闭session这样才能保证能查询到数据!

  而这里我们想要延迟关闭session应该怎么做呢?spring提供了一个过滤器OpenSessionInViewFilter,只要请求还没有结束就不会关闭session

在web.xml中配置这样一个过滤器

<!-- 延迟关闭session的过滤器 ,这个过滤器是由spring提供的 需要在struts过滤器之前执行才可以这样一来session就是由我们这个过滤器创建的,到时候关闭也是由过滤器延迟关闭-->
<filter>
<filter-name>openSession</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>openSession</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

二、关于工具类BaseDao的思想与编写!

1.根据项目代码可知,我们在Dao层操作的代码很多都是重复性很大的代码,而人对于重复性的东西是能简化就简化的,例如增删改查基本上在每个Dao中的相似性极高,我们就可以将重复性的代码抽取出来,将其写成一个工具类,然后以后的Dao只需要去继承这个类即可,不需要再去写一些重复性的代码!

2.思想的构图如下:

在这里我们要附带介绍一下this关键字

this是指当前运行时类的对象,不是指当前对象,注意 观察下面代码的结果

public class Parent {
    public void init(){
        System.out.println("我是Parent的init 1");
        this.demo();
    }

    public void demo(){
        System.out.println("我是Parent 的 demo 2");
    }
}
public class Child extends Parent {
@Test
public void fun(){
    init();
}
    //研究发现this关键字,是指的运行时类的对象
    public void init(){
        super.init();
        System.out.println("我是Child的 init 3");
        this.demo();
    }
    public void demo(){
        System.out.println("我是Child的demo 4");
    }
}

运行后的结果为:

我是Child的 init 1
我是Child的 init 4
我是Child的 init 3
我是Child的 init 4所以this指的是当前运行时类的对象

原文地址:https://www.cnblogs.com/zwxbky/p/11403101.html

时间: 2024-08-03 20:31:31

关于spring整合前两大框架的一些小问题04的相关文章

今日搭建hibernate,Springmvc两大框架遇到的小问题笔记!!!!

执行hibernate报错"node to traverse cannot be null"问题的解决 答应: 一般来说,这是由于使用hibernate 中的HQL做查询时出现了空返回值的错误,很有可能HQL语句本身就写错了. Hibernate 中出现 users is not mapped 问题: 解答:HQL语句中表名应该是ORM映射的类名,所以应该改成:  (如果是用注解生成实体类,那就是注解的那个类)String sql = "select u.password f

解析SSH和SSM两大框架的组成及其区别

前言 熟悉当下流行的两种企业开发MVC开源框架,是Java程序猿必备知识.MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写.M是指业务模型,V是指用户界面,C则是控制器.一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.小编在学校的时候学习过SSH,SSM则是去公司后用的. 一.SSH 和 SSM 的定

spring整合quartz时间任务调度框架

spring整合quartz框架 1.创建maven工程 2.导入jar包(pom.xml) <dependencies> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency&

Spring系列之——Spring事务以及两大核心IOC和AOP

1 Spring事务 1.1 Spring事务是什么(百度) 事务是对一系列的数据库操作(比如插入多条数据)进行统一的提交或是回滚操作,如果插入成功,那么一起成功,如果中间一条出现异常,那么回滚之前的所有操作. Spring事务管理机制使用的是TransactionManager进行管理.回滚注解@Transactional. 2 Spring特征 1)开源框架. 2)IOC(控制反转) 将类的创建和依赖关系写在配置文件中,由配置文件注入,实现松耦合. 3)AOP 将安全.事务等程序逻辑相对独立

前端两大框架 vue 和 react 的区别

1. 设计思想 vue: vue的官网介绍说vue是一种渐进式框架,采用自底向上增量开发的设计: react: 采用函数式编程,推崇纯组件,数据不可变,单向数据流: 2. 编写语法 vue: 采用单文件组件格式,保留了html,css,js分离的写法: react: 通过jsx渲染模板,html,css全部写入js中: 3. 构建工具 vue: 提供cli脚手架,可以非常容易的创建项目并进行配置: react: 使用creat-react-app,有局限行,不能完成某些配置: 4. 状态管理 v

Spring+Spring MVC+MyBatis实现SSM框架整合详细教程【转】

关于Spring+SpringMVC+Mybatis 整合,见还有不少初学者一头雾水,于是写篇教程,初学者按部就班的来一次,可能就会少走不少弯路了. 一:框架介绍(啰嗦两句,可自行度娘) 1.1:Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的

Java Spring 两大特色

0 引言 本文主要描述的是Spring常用的两大特色功能:AOP和IoC容器 1 IoC Spring的IoC:就是常说的“控制反转”,也又叫依赖注入的(DI). 优点:IoC最大的好处就是把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变得很简单(说的是基于接口的编程),只需要修改XML就可以了,这样我们不用重新编译即可运行,甚至可以实现对象的热插拔. 缺点:由于对象的生成使用了反射编程,所以也给它带来了影响效率的缺点,但是相对于它能提高可维护性和灵活性,这点损耗也就不算什么了,

第二十五部分_Struts2.1与Spring整合

依赖注入之后.对象销毁之前自动调用方法: 通过类似于之前Spring项目编码的方式,我们可以通过在setXXX()方法中输出相关的语句来获悉依赖关系注入的执行时机,通过下面介绍的方法可以在依赖关系注入完成之后自动执行一些方法. 如果我们想让一个类的实例在所有属性都已经设置好之后,就让它自动执行某些方法,有两种方式: 实现InitializingBean接口,并且实现里面的唯一方法afterPropertiesSet(),这个方法就会在所有的属性注入完之后自动的得到调用. 在该类中定义一个任意名称

结合源码浅析Struts2与Spring整合的原理

本文假设读者已经自己动手整合过Struts2和Spring这两个框架.我想说明的重点不是如何整合这两个框架,而是为什么经过配置之后Struts的Action等对象可以由Spring来管理,即找到两个框架的衔接点. 笔者用的是框架版本分别为Struts-2.3和Spring-4.1. ------------------------------------------------------- 文章的结构如下: 一.回顾Struts2与Spring整合的配置方法 二.(重点)对关键配置的分析 --