博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate理解
阅读量:6694 次
发布时间:2019-06-25

本文共 1244 字,大约阅读时间需要 4 分钟。

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

 

  

转载于:https://www.cnblogs.com/tiandjnet/archive/2013/04/24/3040881.html

你可能感兴趣的文章
构建高性能数据库缓存之redis(二)
查看>>
sdk 升级,search path,
查看>>
好吧,排列组合,
查看>>
Spring MVC Ajax 嵌套表单数据的提交
查看>>
css实现半颗星评分效果
查看>>
nodejs,事件轮询总结
查看>>
调和生活前的问题
查看>>
Sencha-包装-Native APIs(本地API) (官网文档翻译28)
查看>>
asp.net HC框架 前后台交互及Ajax 及前后台分离开发 及 Demo
查看>>
【Latex】如何在Latex中插入伪代码 —— clrscode3e
查看>>
JProgressBar的用法
查看>>
the art of seo(chapter three)
查看>>
GWT 中实现“CSS Sprite”
查看>>
svn检出maven项目的步骤
查看>>
Mysql的使用基础
查看>>
kernel中使用debug file system进行调试
查看>>
4.彻底理解synchronized
查看>>
(0)资料官网【从零开始学Spring Boot】
查看>>
C# 4动态编程新特性与DLR剖析
查看>>
iOS Beta 升级或降级
查看>>