zoukankan      html  css  js  c++  java
  • HIbernate中的Session以及Hibernate 实现过程

    HIbernate中的Session
      Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持久化操作核心API,
      注意这里的Session的含义,它与传统意思上web层的HttpSession并没有关系,Hibernate Session之与Hibernate,
    相当于JDBC Connection相对与JDBC。
    SessionFactory负责创建Session,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例。
    而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,
    则将会导致Session 数据存取逻辑混乱.因此创建的Session实例必须在本地存取空上运行,使之总与当前的线程相关。
    Session 什么时候清理缓存?
    1,commit() 方法被调用时
    2,查询时会清理缓存,保证查询结果能反映对象的最新状态。
    3,显示的调用session 的 flush方法。

    Connection conn = ...; ---------------------------------------- session = sf.openSession();;
    conn.setAutoCommit(false); ----------------------------------------  tx = session.beginTransactioin();;
    conn.commit(); ---------------------------------------- tx.commit();; (对应左边的两句);
    conn.setAutoCommit(true);
    conn.close(); ---------------------------------------- session.close();;
    Hibernate的JDBCTransaction根本就是conn.commit而已,根本毫无神秘可言,只不过在Hibernate中,
    Session打开的时候,就会自动conn.setAutoCommit(false),不像一般的JDBC,默认都是true,
    所以你最后不写commit也没有关系,由于Hibernate已经把AutoCommit给关掉了,
    所以用Hibernate的时候,你在程序中不写Transaction的话,数据库根本就没有反应。

  • 相关阅读:
    Oracle 基本命令
    一个完整的创建用户,创建表空间,授权建表过程
    jQueryMobile之Popup
    data-theme 几种值的样式
    jQueryMobile之listview
    jQueryMobile之弹出对话框
    android EditText内嵌图片
    css 盒子模型
    kms可用激活服务器地址|kms可用激活服务器分享
    本地配置DNS服务器(MAC版)
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/9508158.html
Copyright © 2011-2022 走看看