OpenSessionInView模式
首先搭建建构
引入jar包
创建实体类 Emp.java
- public class Emp {
- private Integer empId;//员工ID
- 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;
- }
- }
配置大配置
- <hibernate-configuration>
- <session-factory>
- <!-- 1.连接数据库的语句 -->
- <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
- <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
- <property name="connection.username">scott</property>
- <property name="connection.password">0123</property>
- <!-- 输出所有 SQL 语句到控制台。 -->
- <property name="hibernate.show_sql">true</property>
- <!-- 在 log 和 console 中打印出更漂亮的 SQL。 -->
- <property name="hibernate.format_sql">true</property>
- <!-- 方言 -->
- <property name="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</property>
- <!-- hbm2ddl -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 支持getCurrentSession的 属性配置 -->
- <property name="hibernate.current_session_context_class">thread</property>
- <!-- 关联小配置 -->
- <!-- <mapping resource="cn/happy/entity/Project.hbm.xml"/> -->
- <mapping resource="entity/Emp.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
配置 小配置
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="entity">
- <class name="Emp" table="Emp2">
- <id name="empId" column="EMPID">
- <generator class="native"></generator>
- </id>
- <property name="empname" type="string" column="empname"></property>
- <!-- 多对多 -->
- <!-- <set name="pros" table="ProEmp">
- <key column="nid"></key>
- <many-to-many class="Project" column="pid"></many-to-many>
- </set>-->
- </class>
- </hibernate-mapping>
创建HibernateUtil工具类
- public class HibernateUtil {
- private static final ThreadLocal sessionTL = new ThreadLocal();
- private static Configuration configuration;
- //
- private static final SessionFactory sessionFactory;
- static{
- try {
- configuration=new Configuration().configure();
- sessionFactory=configuration.buildSessionFactory();
- } catch (Exception e) {
- throw new ExceptionInInitializerError(e);
- }
- }
- public static Session getSession() {
- Session session = (Session)sessionTL.get();
- if(session==null)
- {
- session = sessionFactory.openSession();
- sessionTL.set(session);
- }
- return session;
- }
- public static void closeSession()
- {
- Session session = (Session)sessionTL.get();
- sessionTL.set(null);
- session.close();
- }
- }
搭建Dao
- package dao;
- import java.io.Serializable;
- import util.HibernateUtil;
- public class Mydao {
- public Object get(Class clazz,Serializable id){
- System.out.println("dao\t"+HibernateUtil.getSession());
- Object result= HibernateUtil.getSession().load(clazz, id);
- return result;
- }
- }
biz层
- public class Hibernatebiz {
- Mydao dao=new Mydao();
- public Object get(Class clazz,Serializable id){
- // Transaction tx = HibernateUtil.getSession().beginTransaction();
- Object obj= dao.get(clazz, id);
- System.out.println("==============================================");
- // tx.commit();
- // HibernateUtil.closeSession();
- return obj;
- }
- }
filter类
- public class MyFilter implements Filter{
- public void destroy() {
- // TODO Auto-generated method stub
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- Session session;
- Transaction tx=null;
- try {
- session=HibernateUtil.getSession();
- tx=session.beginTransaction();
- chain.doFilter(request, response);
- tx.commit();
- } catch (Exception e) {
- e.printStackTrace();
- tx.rollback();
- }
- finally{
- HibernateUtil.closeSession();
- }
- }
最后编写测试类
- public class H_01Test {
- @Test
- public void addTest(){
- Hibernatebiz biz=new Hibernatebiz();
- Object object = biz.get(Emp.class,1);
- Emp emp=(Emp)object;
- System.out.println(emp.getEmpname());
- }
- }
结果:
OpenSessionInView模式的更多相关文章
- [转]OpenSessionInView模式
OpenSessionInView模式解决的问题: * hibernate事物边界问题 * 因session关闭导致hibernate延迟加载例外的问题 事物边界: 一个事物的完成应该 ...
- SSH第一篇【整合SSH步骤、OpenSessionInView】
前言 到目前为止,Struts2.Hibernate.Spring框架都过了一遍了.也写过了Spring怎么与Struts2整合,Spring与Hibernate整合-本博文主要讲解SSH的整合 整合 ...
- 【转】Hibernate 常见异常
转载地址:http://smartan.iteye.com/blog/1542137 Hibernate 常见异常net.sf.hibernate.MappingException 当出 ...
- Struts2,Spring, Hibernate三大框架SSH的整合步骤
整合步骤 创建web工程 引入相应的jar包 整合spring和hibernate框架 编写实体类pojo和hbm.xml文件 编写bean-base.xml文件 <!-- 1) 连接池实例 - ...
- hibernate中load和get方法的区别
1.读取时机不同(当lazy=true的时候) load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延 迟机制(get语句时马上读库): 2.搜索不到数据时的情 ...
- struts2支持的结果类型
在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...
- Spring 管理数据源
Spring 管理数据源 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般是Web应用服务器提供的.在Spring中,你不 ...
- Hibernate 常见异常
Hibernate 常见异常net.sf.hibernate.MappingException 当出现net.sf.hibernate.MappingException: Error r ...
- OpenSessionInViewFilter 的配置及替代方案(转)
鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...
随机推荐
- 疯狂Android讲义 - 学习笔记(六)
第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 ...
- PostgreSQL保存文件到数据库
1.CREATE TABLE public.t_file ( id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('t_file_id_seq'::regc ...
- R语言数据处理包dplyr、tidyr笔记
dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...
- windows如何远程桌面mac
mac远程windows系统比较容易,但是windows远程mac就相对复杂一点,需要借助第三方工具来实现. 下面给出简要的远程步骤: 1.登录mac,点击苹果图标,然后单击[系统偏好设置...].如 ...
- 使用 jQuery & CSS3 制作美丽的照片画廊
在本教程中,我们将创建一个很好看的照片画廊效果.我们的想法是,以显示专辑作为一个滑块,而当这张专辑被选中,我们将使用一个美丽的照片堆栈展示专辑的图像.在照片堆栈视图,我们可以通过将最上面的图像移动到所 ...
- SQL多表查询
设置主键:点击右键设为主键,在默认值那设置newid(),即可自动生成 Join inner join(内连接):select * from 表1 inner join 表2 on 表1.列 = 表2 ...
- mysql环境搭建
最近决定学习数据库,在比较了各个数据库之后,选择从mysql入手,主要原因: 开源 成熟,通用 用户量多,社区完善 入门简单 下载安装 mysql的官网下载地址:http://dev.mysql.co ...
- iOS UISearchController的使用
在iOS9中,UISearchDisplayController 已经被UISearchController替代.搜索框是一种常用的控件. 假设我们要满足下图的需求,产生100个“数字+三个随机字母” ...
- VBoxManage命令
查看有哪些虚拟机VBoxManage list vms 查看虚拟的详细信息VBoxManage list vms –long 查看运行着的虚拟机VBoxManage list runningvms 开 ...
- Android 缓存
1.Android缓存机制&一个缓存框架推荐 http://blog.csdn.net/shakespeare001/article/details/51695358 2.ASimpleCac ...