spring_SSH整合之_OpenSessionInView

来源:互联网 发布:mysql substr 编辑:程序博客网 时间:2024/05/22 12:55

HibernateTemplate中的load和get都可以取回一个对象,难道是方法重复吗?绝对不可能,那它们到底有那些区别呢?

一、load有加载延时,需要设置lazy属性,我没有配置lazy的时候,报错,加上了lazy="false"属性时,用load才没有报错

二、当记录不存在时,load产生异常,get返回null

三、load方法可以返回实体的代理类,get方法则返回真是的实体类
四、load方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据

      而get方法仅仅在内部缓存中进行数据查找,如果没有发现数据則将越过二级缓存,直接调用SQL查询数据库。
五、也许别人把数据库中的数据修改了,load如何在缓存中找到了数据,则不会再访问数据库,而get则会返回最新数据。

在使用load这个方法时要配置openSessionInView延长Session关闭时间在Web.xml文件中配置filter的openSessionInView关闭Session,告诉spring等jsp执行完了再关闭Session。必须放到Struts2的filter前面<!-- 由OpenSessionInView关闭Session,告诉spring等jsp执行完了再关闭Session --><filter><filter-name>openSessionInView</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>openSessionInView</filter-name><url-pattern>/*</url-pattern></filter-mapping>

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- Spring监听器 --><context-param><param-name>contextConfigLocation</param-name><!-- 去classpath下找一个叫beans.xml文件 --><param-value>classpath:beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 由OpenSessionInView关闭Session,告诉spring等jsp执行完了再关闭Session --><filter><filter-name>openSessionInView</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>openSessionInView</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Struts2过滤器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 默认页面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 指定打开.jsp页面默认编码 --><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 与spring集合时,指定由spring负责action对象的创建(自动装配) --><constant name="struts.objectFactory.spring.autoWire" value="type" /><!-- 开发模式下使用,这样可以打印出理详细的错误信息 --><constant name="struts.dewMode" value="true" /><package name="registration" namespace="/bjsxt" extends="struts-default"><action name="user_*" class="com.bjsxt.registration.action.UserAction"method="{1}"><result name="SUCCESS">/registSuccess.jsp</result><result name="FAIL">/registFail.jsp</result><!-- 使用重定向jsp页面取不到list值 --><!-- <result name="LIST" type="redirect">/userlist.jsp</result> --><result name="LIST">/userlist.jsp</result><result name="LOAD">/user.jsp</result></action></package></struts>


package com.bjsxt.registration.action;import java.util.List;import com.bjsxt.registration.model.User;import com.bjsxt.registration.service.UserManager;import com.bjsxt.registration.vo.UserRegisterInfo;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implementsModelDriven<UserRegisterInfo> {private UserRegisterInfo info;private UserManager userManager;private List<User> users;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public UserRegisterInfo getInfo() {return info;}public void setInfo(UserRegisterInfo info) {this.info = info;}public UserManager getUserManager() {return userManager;}public void setUserManager(UserManager userManager) {this.userManager = userManager;}public List<User> getUsers() {return users;}public void setUsers(List<User> users) {this.users = users;}@Overridepublic String execute() throws Exception {User user = new User();user.setUsername(info.getUsername());user.setPassword(info.getPassword());if (userManager.exists(user)) {return "FAIL";}userManager.add(user);return "SUCCESS";}public UserRegisterInfo getModel() {return info;}public String list() {this.users = this.userManager.getUsers();return "LIST";}public String load() {this.user = this.userManager.loadById(info.getId());return "LOAD";}}

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>load列表</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"></head><body><a href="bjsxt/user_list.action">用户列表</a><br /><s:property value="user.username" /><s:debug></s:debug></body></html>

package com.bjsxt.registration.action;import java.util.List;import org.springframework.context.ApplicationContext;import com.bjsxt.registration.model.User;import com.bjsxt.registration.service.UserManager;import com.bjsxt.registration.vo.UserRegisterInfo;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implementsModelDriven {private UserRegisterInfo info;private UserManager userManager;private List users;public UserRegisterInfo getInfo() {return info;}public void setInfo(UserRegisterInfo info) {this.info = info;}public UserManager getUserManager() {return userManager;}public void setUserManager(UserManager userManager) {this.userManager = userManager;}public List getUsers() {return users;}public void setUsers(List users) {this.users = users;}@Overridepublic String execute() throws Exception {User user = new User();user.setUsername(info.getUsername());user.setPassword(info.getPassword());if (userManager.exists(user)) {return "FAIL";}userManager.add(user);return "SUCCESS";}public UserRegisterInfo getModel() {return info;}public String list() {this.users = this.userManager.getUsers();return "LIST";}}/registSuccess.jsp/registFail.jsp/userlist.jsp<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%@ taglib uri="/struts-tags" prefix="s"%>用户列表用户名密码

阅读全文
0 0
原创粉丝点击