基本概念和CURD

开发流程

1、由Domain object -> mapping->db。(官方推荐)

2、由DB开始,用工具生成mapping和Domain object。(使用较多)

3、由映射文件开始。

Domain Object限制

1、默认的构造方法(必须的)。

2、有无意义的标示符id(主键)(可选)

3、非final的,对懒加载有影响(可选)

      DomainJava Object(User)public class User {private int id;private String name;private Date birthDay;//gettersetter…
}

1、xx.hbm.xml

<?xml version="1.0"?>
<hibernate-mapping package=“cn.itcast.domain">
<class name="User"table="user"><idname="id"><generatorclass="native"/></id><propertyname="name"/><propertyname="birthday”/>
</class>
</hibernate-mapping>

l      对象关系映射文件:把面向对象中的实体类对象映射到数据库中的实体(表的记录),把实体类之间的关联关系也映射到数据库中多个表之间的相互关系中。这样,在Hibernate中对这些实体对象的操作就直接转换为对数据库表的记录的操作。

1.Configuration类

是Hibernate的入口,它负责配置并启动Hibernate。Hibernate通过Configuration的实例加载配置文件信息,然后读取指定对象关系映射文件的内容并创建SessionFactory实例。

2.SessionFactory接口

负责初始化Hibernate。一个SessionFactory实例对应一个数据库。应用程序从SessionFactory中获得Session实例。

3.Session接口

Session被称为持久化管理器,负责管理与持久化相关的操作:存储、更新、删除和加载对象。

4.Transaction接口

是Hibernate框架的事务接口。它对底层的事务接口做了封装。包括:JDBC API和JTA。

Session的缓存(一级缓存)

Session的CRUD方法以及调用查询接口的list(),iterate()方法时,如果session缓存中不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中,如果session缓存中已经存在这个对象,就不需在去数据库加载,而直接使用缓存中的对象。

l          flush: 进行清理缓存(此时缓存中的数据并不丢失)的操作,让缓存和数据库同步执行一些列sql语句,但不提交事务,;

l           commit:先调用flush() 方法,然后提交事务. 则意味着提交事务意味着对数据库操作永久保存下来。

session的缓存一般交由hibernate框架自动管理。

Session的几个主要方法

1、save保存数据

2、delete,删除对象

3、update,更新对象,如果数据库中没有记录,会出现异常。

4、get,根据ID查,会立刻访问数据库。

5、Load,根据ID查,(返回的是代理,不会立即访问数据库)。

6、saveOrUpdate (根据ID和version的值来确定是save或update

2011级-csdn-java-张侃— Hibernate原理与应用(二)相关推荐

  1. 2011级-csdn-java-张侃— Hibernate原理与应用(一)

    l      Hibernate是一个开源ORM框架. l      ORM全称Object Relation Mapping,即对象关系映射.它是一种用来完成对象模型到关系模型的映射技术. •    ...

  2. 2011级-csdn-java-张侃— Hibernate原理与应用(三)

    Myeclipse开发hibernate 对象状态 l       瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联 ...

  3. Java NIO使用及原理分析(二)

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:李会军•宁静致远 在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是 ...

  4. 2011级-csdn-java-张侃—第十一周周报

    河软CSDN乐知学院 学员周学习总结 姓名 张侃 周次 11 方向 Java 内 容 本周学习知识点: EL表达式简介 面向对象的程序设计模式 自定义JSP标签 本周学习收获: EL表达式简介 EL表 ...

  5. Hibernate第一次课(2)---Hibernate原理简介

    学员要求:熟悉Java.SQL.JDBC,掌握面向对象的开发方法,并有实际的项目开发经验. 培训目标:让学员了解O/R Mapping原理,掌握Hibernate开发的相关知识,并能使用Hiberna ...

  6. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  7. 【有料】Java线程池实现原理及其在美团业务中的实践

    随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员 ...

  8. spring原理 struts2原理 hibernate原理 MyBatis原理 SpringMVC

    Spring原理 最核心的就是IOC,动态注入DI,利用java里的反射,让一个对象的创建不用new了,可以自动的生产.Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调 ...

  9. 2011年度CSDN高校俱乐部“优秀主席”火热出炉

    2011年,CSDN高校俱乐部取得了骄人的成绩:举办全国高校巡讲.移动互联网应用创新大赛.星空大赛等技术活动100余场,覆盖全国高校50余所,辐射学生45000余人.活动效果获得了学校领导.老师和学生 ...

最新文章

  1. 将assembly包添加到自己的maven仓库
  2. [ATF]-ATF的RT_SVC的详解(runtime service)
  3. 光模块该如何使用,光模块的使用方法介绍!
  4. timerfd API使用总结
  5. Sql字符串函数(1)
  6. pytorch之with torch.no_grad
  7. 利用SharePoint Designer开发可循环工作流
  8. ROOBO公布A轮1亿美元融资 发布人工智能机器人系统
  9. sql批量插入防止重复插入_使用具有严格业务规则SQL批量插入
  10. 水晶报表中对某一栏位值进行处理_从主流报表工具的报价看报表行业的报价水深-----常用报表工具对比---主流报表价格对比...
  11. openharmony开发TS语言基础
  12. 基于js的火星坐标、百度坐标、WGS84坐标转换
  13. (转)一个大牛的acm历程(看着就要颤抖)
  14. r软件 linux,分享|Linux 上好用的 R 语言 IDE
  15. 华为新平板鸿蒙,华为新平板将发布,搭载鸿蒙2.0系统
  16. 数字信号处理:视频-15-FFT计算线性卷积
  17. 【Web 技术】818- 一文带你层层解锁「文件下载」的奥秘
  18. IDEA快速搜索你想要的内容,例如注释...
  19. 安装Gearman及其PHP扩展
  20. JS 批量删除(所有页面)

热门文章

  1. 广州APP开发多少钱一个呢,品向告诉你知道
  2. 数字转换为固定长度字符串
  3. 转 性能之殇:从冯·诺依曼瓶颈谈起
  4. php门禁系统开发,物联网门禁管理系统设计思路分析
  5. java婚纱影楼管理系统论文_基于Java的婚纱影楼管理系统设计论文
  6. 翰歌世纪来成都传智播客招兵买马
  7. 做个简单的Java学生考勤系统01--实体类的创建与建表
  8. Android——SdCard数据存储
  9. 观五官知罕见病,AI“望诊”靠谱吗
  10. Onboarding