zoukankan      html  css  js  c++  java
  • hibernate理解

    hibernate是对jdbc轻量级封装的反射为基础的orm(object relation mapping 对象关系映射)框架,充当项目的持久层。

    保存数据 save,update  查询load (xx.class ,id) ,get()(区别下面会讲到) 删除delete

    ,所操作的类必须有序列。序列式文件传送的标识。

    pojo类1是和一张表对应的,2一般我们放在com.xxx.model(domain)里

    3pojo需要一个主键属性(用于标示一个pojo对象)4除了主键属性外,它应当还有其属性是private

    5提供set/get方法 6他应当有一个无参的构造方法,用于hibernate反射

    通过SessionFatory获取Session的2个方法openSession、getCurrentSession();

      openSession每次获得全新的Session

      getCurrentSession获取和当前线程绑定的Session,利于事务的控制。(如果希望使用getCurrentSession需要配置hibernate.cfg.xml里配置<property                         name="current_session_context.class">thread</property>)

      如何选择

      getCurrentSession()会自动关闭 openSession要自动关闭 但我们最好都手动关闭

      getCurrentsession获取的Session进行的查询需要事务提交

    Session接口的功能

      1.Session一个实例代表与数据库的一次操作(一次操作可以crud组合)

      2.Session实例通过SessionFactory获取,用完需要关闭

      3.Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSession()

      4Session可以看做做持久化管理器,他是与持久化操作相关的接口

    get和load区别

      1.如果查询不到数据,get返回null ,load会报错  objectNotFundException

      2.使用get去查询数据,会立即向db发出查询请求select,  load 查询数据查到的是代理对象,如果后面没有使用查询结果,它不会真的向数据库发Select,当程序员使用查询结果的时候才真的发出Select,即懒加载(通过配置文件可以取消懒加载(class name="xxx"lazy="false" table="Xxx")) 确定有某个对象最后用懒加载.get先在Session里找,然后2级缓存 ,在Db   , load会先到Session里找,然后到二级缓存里找,如果找到就放到一级缓存,然后等待

      

  • 相关阅读:
    3.默认参数的注意事项
    2.关键字global,nonlocal
    1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数
    19. 实现一个整数加法计算器(多个数相加):
    20.文件操作
    18.使用for循环计算+1-3+5-7+9-11+13...99的结果
    ubuntu docker更新镜像源
    虚拟环境的使用
    前端基础之HTML
    jQuery基本使用
  • 原文地址:https://www.cnblogs.com/tiandjnet/p/3040881.html
Copyright © 2011-2022 走看看