首先搭建建构

引入jar包

创建实体类  Emp.java

  1. public class Emp {
  2. private Integer empId;//员工ID
  3. private String empname; //员工姓名
  4. public Integer getEmpId() {
  5. return empId;
  6. }
  7. public void setEmpId(Integer empId) {
  8. this.empId = empId;
  9. }
  10. public String getEmpname() {
  11. return empname;
  12. }
  13. public void setEmpname(String empname) {
  14. this.empname = empname;
  15. }
  16.  
  17. }

配置大配置

  1. <hibernate-configuration>
  2. <session-factory>
  3. <!-- 1.连接数据库的语句 -->
  4. <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
  5. <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
  6. <property name="connection.username">scott</property>
  7. <property name="connection.password">0123</property>
  8.  
  9. <!-- 输出所有 SQL 语句到控制台。 -->
  10. <property name="hibernate.show_sql">true</property>
  11.  
  12. <!-- 在 log 和 console 中打印出更漂亮的 SQL。 -->
  13. <property name="hibernate.format_sql">true</property>
  14. <!-- 方言 -->
  15. <property name="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</property>
  16.  
  17. <!-- hbm2ddl -->
  18. <property name="hibernate.hbm2ddl.auto">update</property>
  19.  
  20. <!-- 支持getCurrentSession的 属性配置 -->
  21. <property name="hibernate.current_session_context_class">thread</property>
  22. <!-- 关联小配置 -->
  23.  
  24. <!-- <mapping resource="cn/happy/entity/Project.hbm.xml"/> -->
  25. <mapping resource="entity/Emp.hbm.xml"/>
  26.  
  27. </session-factory>
  28.  
  29. </hibernate-configuration>

配置  小配置

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping package="entity">
  5. <class name="Emp" table="Emp2">
  6. <id name="empId" column="EMPID">
  7. <generator class="native"></generator>
  8. </id>
  9. <property name="empname" type="string" column="empname"></property>
  10.  
  11. <!-- 多对多 -->
  12. <!-- <set name="pros" table="ProEmp">
  13. <key column="nid"></key>
  14. <many-to-many class="Project" column="pid"></many-to-many>
  15. </set>-->
  16. </class>
  17.  
  18. </hibernate-mapping>

创建HibernateUtil工具类

  1. public class HibernateUtil {
  2.  
  3. private static final ThreadLocal sessionTL = new ThreadLocal();
  4. private static Configuration configuration;
  5. //
  6. private static final SessionFactory sessionFactory;
  7. static{
  8. try {
  9. configuration=new Configuration().configure();
  10. sessionFactory=configuration.buildSessionFactory();
  11.  
  12. } catch (Exception e) {
  13. throw new ExceptionInInitializerError(e);
  14. }
  15.  
  16. }
  17. public static Session getSession() {
  18.  
  19. Session session = (Session)sessionTL.get();
  20. if(session==null)
  21. {
  22. session = sessionFactory.openSession();
  23. sessionTL.set(session);
  24. }
  25. return session;
  26. }
  27. public static void closeSession()
  28. {
  29. Session session = (Session)sessionTL.get();
  30. sessionTL.set(null);
  31. session.close();
  32.  
  33. }
  34.  
  35. }

搭建Dao

  1. package dao;
  2.  
  3. import java.io.Serializable;
  4.  
  5. import util.HibernateUtil;
  6.  
  7. public class Mydao {
  8. public Object get(Class clazz,Serializable id){
  9. System.out.println("dao\t"+HibernateUtil.getSession());
  10. Object result= HibernateUtil.getSession().load(clazz, id);
  11. return result;
  12. }
  13.  
  14. }

biz层

  1. public class Hibernatebiz {
  2. Mydao dao=new Mydao();
  3. public Object get(Class clazz,Serializable id){
  4. // Transaction tx = HibernateUtil.getSession().beginTransaction();
  5. Object obj= dao.get(clazz, id);
  6. System.out.println("==============================================");
  7. // tx.commit();
  8. // HibernateUtil.closeSession();
  9. return obj;
  10. }
  11.  
  12. }

filter类

  1. public class MyFilter implements Filter{
  2.  
  3. public void destroy() {
  4. // TODO Auto-generated method stub
  5.  
  6. }
  7.  
  8. public void doFilter(ServletRequest request, ServletResponse response,
  9. FilterChain chain) throws IOException, ServletException {
  10. Session session;
  11. Transaction tx=null;
  12. try {
  13. session=HibernateUtil.getSession();
  14. tx=session.beginTransaction();
  15. chain.doFilter(request, response);
  16. tx.commit();
  17.  
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. tx.rollback();
  21. }
  22. finally{
  23. HibernateUtil.closeSession();
  24. }
  25.  
  26. }

最后编写测试类

  1. public class H_01Test {
  2. @Test
  3. public void addTest(){
  4. Hibernatebiz biz=new Hibernatebiz();
  5. Object object = biz.get(Emp.class,1);
  6. Emp emp=(Emp)object;
  7. System.out.println(emp.getEmpname());
  8.  
  9. }
  10.  
  11. }

结果:

OpenSessionInView模式的更多相关文章

  1. [转]OpenSessionInView模式

    OpenSessionInView模式解决的问题:   * hibernate事物边界问题   * 因session关闭导致hibernate延迟加载例外的问题 事物边界:     一个事物的完成应该 ...

  2. SSH第一篇【整合SSH步骤、OpenSessionInView】

    前言 到目前为止,Struts2.Hibernate.Spring框架都过了一遍了.也写过了Spring怎么与Struts2整合,Spring与Hibernate整合-本博文主要讲解SSH的整合 整合 ...

  3. 【转】Hibernate 常见异常

    转载地址:http://smartan.iteye.com/blog/1542137 Hibernate 常见异常net.sf.hibernate.MappingException        当出 ...

  4. Struts2,Spring, Hibernate三大框架SSH的整合步骤

    整合步骤 创建web工程 引入相应的jar包 整合spring和hibernate框架 编写实体类pojo和hbm.xml文件 编写bean-base.xml文件 <!-- 1) 连接池实例 - ...

  5. hibernate中load和get方法的区别

    1.读取时机不同(当lazy=true的时候)    load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延  迟机制(get语句时马上读库): 2.搜索不到数据时的情 ...

  6. struts2支持的结果类型

    在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...

  7. Spring 管理数据源

    Spring 管理数据源 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般是Web应用服务器提供的.在Spring中,你不 ...

  8. Hibernate 常见异常

    Hibernate 常见异常net.sf.hibernate.MappingException        当出现net.sf.hibernate.MappingException: Error r ...

  9. OpenSessionInViewFilter 的配置及替代方案(转)

    鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...

随机推荐

  1. 疯狂Android讲义 - 学习笔记(六)

    第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 ...

  2. PostgreSQL保存文件到数据库

    1.CREATE TABLE public.t_file ( id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('t_file_id_seq'::regc ...

  3. R语言数据处理包dplyr、tidyr笔记

    dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...

  4. windows如何远程桌面mac

    mac远程windows系统比较容易,但是windows远程mac就相对复杂一点,需要借助第三方工具来实现. 下面给出简要的远程步骤: 1.登录mac,点击苹果图标,然后单击[系统偏好设置...].如 ...

  5. 使用 jQuery & CSS3 制作美丽的照片画廊

    在本教程中,我们将创建一个很好看的照片画廊效果.我们的想法是,以显示专辑作为一个滑块,而当这张专辑被选中,我们将使用一个美丽的照片堆栈展示专辑的图像.在照片堆栈视图,我们可以通过将最上面的图像移动到所 ...

  6. SQL多表查询

    设置主键:点击右键设为主键,在默认值那设置newid(),即可自动生成 Join inner join(内连接):select * from 表1 inner join 表2 on 表1.列 = 表2 ...

  7. mysql环境搭建

    最近决定学习数据库,在比较了各个数据库之后,选择从mysql入手,主要原因: 开源 成熟,通用 用户量多,社区完善 入门简单 下载安装 mysql的官网下载地址:http://dev.mysql.co ...

  8. iOS UISearchController的使用

    在iOS9中,UISearchDisplayController 已经被UISearchController替代.搜索框是一种常用的控件. 假设我们要满足下图的需求,产生100个“数字+三个随机字母” ...

  9. VBoxManage命令

    查看有哪些虚拟机VBoxManage list vms 查看虚拟的详细信息VBoxManage list vms –long 查看运行着的虚拟机VBoxManage list runningvms 开 ...

  10. Android 缓存

    1.Android缓存机制&一个缓存框架推荐 http://blog.csdn.net/shakespeare001/article/details/51695358 2.ASimpleCac ...