首页 > 代码库 > OpenSessionInview
OpenSessionInview
Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着
实现步骤:
步骤一.创建一个Web项目,创建包cn.happy.util,创建HibernateUtil工具类
public class HibernateUtil{ private static final ThreadLocal sessionTL=new ThreadLocal(); private static Configuration cfg; private final static SessionFactory factory; static{ cfg=new Configuration().configure(); factory=cfg.buildSessionFactory(); } public static Session currentSession() { Session session=(Session)sessionTL.get(); if(session==null) { session=factory.openSession(); sessionTL.set(session); } return session; } public static void closeSession() { Session session=(Session) sessionTL.get(); sessionTL.set(null); session.close(); }}
步骤二.创建包cn.happy.entity,创建实体类Emp和Emp.hbm.xml小配置文件
public class Emp { private Integer empId; private String empName; public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; }
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.happy.entity"> <class name="Emp" table="Emps"> <id name="empId"> <generator class="native"> </generator> </id> <property name="empName"></property> <!-- 植入一个Dept对象 多对一 --> </class></hibernate-mapping>
步骤三.创建包cn.happy.Dao创建类MyDao
public class MyDao{ public Object get(Class classz,Serializable id) { Object obj=HibernateUtil.currentSession().load(classz,id); return obj; } }
步骤四.创建包cn.happy.biz创建类MyBiz
public class MyBiz{ public Object get(Class classz,Serializable id) { MyDao dao=new MyDao(); Obejct obj=dao.get(classz,id); return obj; }}
步骤五.创建cn.happy.filter包创建类MyFilter,实现Filter接口,重写doFilter方法
public void doFilter(ServletRequet request,ServletResponse response,FilterChain arg2) throw IOException,ServletExption{ Session session=null; Transaction tx=null; session=HibernateUtil.currentSession(); tx=session.beginTransaction(); arg2.doFilter(request,response); tx.commit(); HibernateUtil.closeSession();}
步骤六.创建大配置文件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> <!-- Database connection settings 数据库连接设置 --> <!-- 驱动类 --> <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <!-- url地址 --> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="connection.username">Hibernate</property> <property name="connection.password">orcl</property> <!-- SQL dialect (SQL 方言) --> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!--在控制台打印后台的SQL语句 --> <property name="show_sql">true</property> <!-- 格式化显示SQL --> <!-- <property name="format_sql">true</property> --> <!-- 自动生成表 --> <property name="hbm2ddl.auto">update</property> <!-- 关联小配置 --> <mapping resource="cn/happy/entity/Emp.hbm.xml" /> </session-factory></hibernate-configuration>
步骤七.在web.xml文件中配置fileter
<?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"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>openSessionInview</filter-name> <filter-class>cn.happy.Filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInview</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
然后我们在index.xml文件中来显示数据
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@page import="org.hibernate.Session"%><%@page import="cn.happy.Util.HibernateUtil" %><%@page import="org.hibernate.Transaction" %><%@page import="cn.happy.Biz.MyBiz" %><%@page import="cn.happy.entity.Emp" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>OpenSessionInview</title> </head> <body> <% MyBiz biz=new MyBiz();
<!--拿到id为1的员工,在页面显示名字--> Object object = biz.get(Emp.class, 1); Emp emp=(Emp)object; %> <%=emp.getEmpName() %> </body></html>
这样我们就实现了OpenSessionInview
OpenSessionInview
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。