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

  • 相关阅读:
    Hadoop笔记
    InnoDB存储引擎概述--文件,表,索引,锁,事务的原理与实现
    SpringCloud-Eureka
    spring boot启动报错Error starting ApplicationContext(未能配置数据源)
    SSM框架配置
    SpringMvc笔记
    MySql笔记-->3
    MySql笔记-->2
    MySql笔记 -->1
    C# Lambda表达式
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/9508158.html
Copyright © 2020-2023  润新知