`

注意:Spring中使用Hibernate

阅读更多
1. 建议使用Hiberante进行Session和Transaction的管理
    将需要进行事务的多个原子DAO设置到Service里,在Service层进行事务控制和会话控制。
    设置一个基础的dao,即baseDAO 且继承之HibernateDaoSupport,而业务对象原子DAO,持有一个baseDAO的引用,通过setter注射设置到业务DAO中。
    多个原子DAO,通过setter注射到Service层。

2. 在显示层,一对多显示时,提示Session关闭的问题
    两个解决方法:
    1)在one-to-many设置lazy=false,即不延迟加载子对象,但这样可能会带来性能的问题,特别是父子关系模型是树状结构时。
    2)使用Hibernate提供的openSessiojnInView技术,即在视图层开启和关闭Session,在service层进行Transaction管理,这个较为简单,只需要设置一个filter即可,在web.xml中配置
<filter>
  <filter-name>hibernateFilter</filter-name>
  <filter-class>
org.springframework.orm.hibernate.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
  <filter-name>hibernateFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>


需要注意的是,OpenSessionInViewFilter在调用过程中,需要引用Spring的ApplicationContext,而该对象实例必须是保存在ServletContext中的,因此需要在web.xml中处始化Spring的环境,增加配置如下:
<context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>/WEB-INF/spring/applicationContext-hibernate.xml</param-value>
        </context-param>
     <servlet>
     <servlet-name>context</servlet-name>
             <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
             <load-on-startup>1</load-on-startup>
     </servlet>

其中

<servlet-name>context</servlet-name>
             <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
             <load-on-startup>1</load-on-startup>
     </servlet>


表示在启动时,进行Spring环境的处始化,因此以后如果要引用Spring中的某个bean实例

如下代码即可

org.springframework.context.ApplicationContext ctx = (org.springframework.context.ApplicationContext)application.getAttribute(org.springframework.web.context.WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);


然后调用ctx.getBean返回bean实例

Spring不只是AOP和IOC,更提供了大量的可重用技术,譬如request中的重设编码,Spring提供了相应的Filter:org.springframework.web.filter.CharacterEncodingFilter 通过直接配置,即可解决Web应用中POST的中文乱码问题,JMS的org.springframework.jms 包  JavaMail的org.springframework.mail包等等,更多的,请参看Spring的reference,

Spring能改善现有代码结构,大量的减少hard code,加快开发进度;
分享到:
评论

相关推荐

    使用Struts+Spring+Hibernate整合开发例子

    注意spring的配置文件要放到WEB-INF下。 4. 添加hibernate框架包。 注意:在添加hibernate框架时,选择生成spring configuration file (applicationContext.xml)。 这里是使用spring配置文件管理hibernate。 先...

    struts2+spring+hibernate整合示例

    b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...

    struts2 spring hibernate整合的简单登录代码

    使用mysql数据库的struts2 spring hibernate整合简单示例,也可参考我的:“struts2 spring hibernate整合要点、注意点”这篇文档来配置

    spring+spring mvc+hibernate开发工程财务管理辅助系统

    spring+spring mvc+hibernate+easyui+jquery+ehcache http://localhost:8080/admin/index 账号HBU001 111111 管理员admin admin 注意事项 1.系统的默认用户超级管理员:admin(密码:admin)。系统的操作:用户超级...

    spring4+hibernate4+maven

    Spring4+hibernate4+maven 内附demo. 注意:jdbc文件需要自己创建好空数据库,配置一下即可,数据表会自动生成。

    2017最新SSH整合案例(注意:本案例使用框架是Spring+Springmvc+Hibernate)

    本案例是一个ssh整合案例,注意:本案例采用的框架是Spring+Springmvc+hibernate

    Struts2+Spring3+Hibernate3 用户管理系统实例源码

    本例主要是实现了struts2+spring3+hibernate3的 基本框架搭建的注册登录,以及用户增删改查,适于初学者学习。 包括:注册 登录功能 分页的实现 前端校验 验证码的实现 注册时有ajax 校验,登录时 后台从数据库...

    利用Spring来管理Hibernate完整例子

    其中Hibernate每次都需要手动创建SessionFactory,Session,手动开启提交关闭事务。而这一切操作完全是由Spring来代替。使持久层更加方便,使开发人员减少持久层操作,把注意力放到业务上。

    精品源码:Struts+spring+hibernate的J2EE源码,适合新手学习

    基于Struts+spring+hibernate的J2EE源码,适合新手学习,带分页。 系统默认使用MySQl数据库。 建表很简单,Mysql建User表,sqlserver不支持User表。请在User.hbm.xml修改对应的表名。 另外注意分页的时候选择的SQL...

    Struts2+Spring4+Hibernate5 整合JAR包

    Struts2+Spring4+Hibernate5 整合JAR包,注意是jar包整合,不是项目~~

    struts2+spring3+hibernate4 + UI 组件(easyui)+代码生成器+共通封装+Spring_security权限

    数据字典封装, 邮件发送封装,定时器封装,hibernate+spring jdbc组合使用 [4].完整用户权限封装 权限可直接使用 功能:权限,角色,用户 [5].ehcache缓存机制(永久缓存/临时缓存) 代码生成器界面: A.动态选择...

    passwd002-spring-hibernate应用

    这是一个Dynamic Web Project,主要使用hibernate和spring框架,其中事务管理使用的是注解。 hibernate的版本:hibernate-distribution-3.6.6.Final; spring的版本:spring-framework-3.1.0.M2 。 注意:此项目没有...

    SpringMVC+Spring+SpringDataJPA+Hibernate整合登录的效果

    这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...

    Spring+Hibernate+struts是如何整合起来的

    首先添加一个WEB工程 然后依次添加Struts框架,spring框架,...在添加Hibernate时注意选择现有的Spring配置文件,Hibernate的配置文件集成在Spring的配置文件中 最后在映射表的时候选择Spring的DAO作为IoC的实现

    Eclipse搭建struts2+spring3+hibernate3

    主要目的自己动手搭建一个ssh框架。 可以分为3步: 1.加载struts-2.3.16.3,把画面跑出来,...3.删除Hibernate的配置文件Hibernate.cfg.xml,工厂类HibernateSesseionFactory类,交由spring去做。 注意: 数据库:mysql

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...

    struts2+hibernate+spring源码

    Struts2,Spring,Hibernate,DWR,JavaMail,以及少部分正则表达式。其实都是非常基础简单的应用,目的就是让大家看看这些框架是如何协同工作的。开发平台为:Winxp2+JDK1.5+Tomcat5.5+MySQL5.0。 以下是本例子的...

    权限管理系统(spring+structs+hibernate)

    使用spring structs hibernate 实现的权限管理系统,功能挺强大的,提供人员管理、模块管理、角色管理、用户管理相关的代码。 同时,需注意,在分页中实现了动态更改每页显示行数的功能(请参考机构管理的实例)

    基于Struts2+hibernate+spring 注解开发的学生信息管理系统

    Struts2+hibernate+spring开发,使用MySQL数据,实现学生基本信息的增删改查功能,但是页面不美观

    spring-boot-jpa-hibernate-demo:Spring Boot中的JPA + Hibernate + MySQL

    JPA 使用 Hibernate 作为实现方式JPA + Hibernate + MySQL in Spring Boot注意此项目使用spring-boot 1.4.0版本,不适用于spring-boot 2.0 版本;2.0版本的项目配置可参考:本项目使用IDEA构建,直接导入IDEA即可...

Global site tag (gtag.js) - Google Analytics