zoukankan      html  css  js  c++  java
  • 面试题:hibernate 有用

    1. Hibernate的工作流程?

    答案:

    1.通过Configuration对象读取并解析配置文件

    2.读取并解析映射信息,创建SessionFactory对象

    3.打开session

    4.创建事务Transaction

    5.持久化操作,对对象进行CRUD操作

    6.提交事务

    7.关闭session和SessionFactory对象

    2. hibernate中SessionFactory如何创建session实例

    答案:

    SessionFactory接口提供了获取session类实例的方法。

    一般有两种方法创建session实例:

    1、getCurrentSession方法:底层用的是ThreadLocal<Session>  线程副本变量保存session

    采用该方法创建的session实例会绑定到当前线程当中。且session实例会在提交或回滚时自动关闭

    2、openSession方法:

    采用该方法会创建新的的session实例。使用完后需进行手动关闭

    session类用于对数据库的操作。

    session类是“非线程安全”的。

    每执行一个数据库事务,都需要创建一个session实例,使用后还需要关闭session。

    3. Hibernate中的SessionFactory有什么作用?

    答案:

    SessionFactory就是一个用于创建Hibernate的Session对象的工厂。SessionFactory通常是在应用启动时创建好的,应用程序中的代码用它来获得Session对象。作为一个单个的数据存储,它也是 线程安全的,所以多个线程可同时使用同一个SessionFactory。Java JEE应用一般只有一个SessionFactory,服务于客户请求的各线程都通过这个工厂来获得Hibernate的Session实例,这也是为什么SessionFactory接口的实现必须是线程安全的原因。还有,SessionFactory的内部状态包含着同对象关系影射有关的所有元数据,它是 不可变的,一旦创建好后就不能对其进行修改了。

  • 相关阅读:
    BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)
    「BZOJ1433」[ZJOI2009] 假期的宿舍(二分图,网络流)
    BZOJ 1061 [Noi2008]志愿者招募(费用流)
    [BZOJ2879][Noi2012]美食节(费用流)
    bzoj 1834 [ZJOI2010] network 网络扩容(费用流)
    BZOJ2668:[CQOI2012]交换棋子(费用流)
    bzoj1070【SCOI2007】修车(费用流)
    【BZOJ 1877】 [SDOI2009]晨跑(费用流)
    SQLite_Home
    GeoMesa-单机搭建
  • 原文地址:https://www.cnblogs.com/shan1393/p/9016208.html
Copyright © 2011-2022 走看看