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,加快开发进度;
分享到:
相关推荐
注意spring的配置文件要放到WEB-INF下。 4. 添加hibernate框架包。 注意:在添加hibernate框架时,选择生成spring configuration file (applicationContext.xml)。 这里是使用spring配置文件管理hibernate。 先...
b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...
使用mysql数据库的struts2 spring hibernate整合简单示例,也可参考我的:“struts2 spring hibernate整合要点、注意点”这篇文档来配置
spring+spring mvc+hibernate+easyui+jquery+ehcache http://localhost:8080/admin/index 账号HBU001 111111 管理员admin admin 注意事项 1.系统的默认用户超级管理员:admin(密码:admin)。系统的操作:用户超级...
Spring4+hibernate4+maven 内附demo. 注意:jdbc文件需要自己创建好空数据库,配置一下即可,数据表会自动生成。
本案例是一个ssh整合案例,注意:本案例采用的框架是Spring+Springmvc+hibernate
本例主要是实现了struts2+spring3+hibernate3的 基本框架搭建的注册登录,以及用户增删改查,适于初学者学习。 包括:注册 登录功能 分页的实现 前端校验 验证码的实现 注册时有ajax 校验,登录时 后台从数据库...
其中Hibernate每次都需要手动创建SessionFactory,Session,手动开启提交关闭事务。而这一切操作完全是由Spring来代替。使持久层更加方便,使开发人员减少持久层操作,把注意力放到业务上。
基于Struts+spring+hibernate的J2EE源码,适合新手学习,带分页。 系统默认使用MySQl数据库。 建表很简单,Mysql建User表,sqlserver不支持User表。请在User.hbm.xml修改对应的表名。 另外注意分页的时候选择的SQL...
Struts2+Spring4+Hibernate5 整合JAR包,注意是jar包整合,不是项目~~
数据字典封装, 邮件发送封装,定时器封装,hibernate+spring jdbc组合使用 [4].完整用户权限封装 权限可直接使用 功能:权限,角色,用户 [5].ehcache缓存机制(永久缓存/临时缓存) 代码生成器界面: A.动态选择...
这是一个Dynamic Web Project,主要使用hibernate和spring框架,其中事务管理使用的是注解。 hibernate的版本:hibernate-distribution-3.6.6.Final; spring的版本:spring-framework-3.1.0.M2 。 注意:此项目没有...
这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...
首先添加一个WEB工程 然后依次添加Struts框架,spring框架,...在添加Hibernate时注意选择现有的Spring配置文件,Hibernate的配置文件集成在Spring的配置文件中 最后在映射表的时候选择Spring的DAO作为IoC的实现
主要目的自己动手搭建一个ssh框架。 可以分为3步: 1.加载struts-2.3.16.3,把画面跑出来,...3.删除Hibernate的配置文件Hibernate.cfg.xml,工厂类HibernateSesseionFactory类,交由spring去做。 注意: 数据库:mysql
MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...
Struts2,Spring,Hibernate,DWR,JavaMail,以及少部分正则表达式。其实都是非常基础简单的应用,目的就是让大家看看这些框架是如何协同工作的。开发平台为:Winxp2+JDK1.5+Tomcat5.5+MySQL5.0。 以下是本例子的...
使用spring structs hibernate 实现的权限管理系统,功能挺强大的,提供人员管理、模块管理、角色管理、用户管理相关的代码。 同时,需注意,在分页中实现了动态更改每页显示行数的功能(请参考机构管理的实例)
Struts2+hibernate+spring开发,使用MySQL数据,实现学生基本信息的增删改查功能,但是页面不美观
JPA 使用 Hibernate 作为实现方式JPA + Hibernate + MySQL in Spring Boot注意此项目使用spring-boot 1.4.0版本,不适用于spring-boot 2.0 版本;2.0版本的项目配置可参考:本项目使用IDEA构建,直接导入IDEA即可...