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的话,数据库根本就没有反应。

  • 相关阅读:
    814. Binary Tree Pruning
    50. Pow(x, n)
    698. Partition to K Equal Sum Subsets
    416. Partition Equal Subset Sum
    150. Evaluate Reverse Polish Notation
    322. Coin Change
    Vulnerable Kerbals CodeForces
    D. Domino for Young
    C. Long Beautiful Integer
    B. Modulo Equality
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/9508158.html
Copyright © 2011-2022 走看看