• 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里找,然后到二级缓存里找,如果找到就放到一级缓存,然后等待

      

  • 相关阅读:
    Linux/Ubuntu tree 命令以树形结构显示文件夹目录结构
    apt-get install的默认安装路径
    error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
    利用keras进行手写数字识别模型训练,并输出训练准确度
    OpenCV:图像的合并和切分
    OpenCV:图像的按位运算
    OpenCV:增加和减少图像的亮度,图像的加减法
    OpenCV:获取图像当中某一点的坐标
    OpenCV:图像的裁剪
    OpenCV:图像的水平、垂直、水平垂直翻转
  • 原文地址:https://www.cnblogs.com/tiandjnet/p/3040881.html
Copyright © 2020-2023  润新知