Hibernate是JDBC的轻量级的对象封装(encapsulation),它是一个独立的对象持久persistence层框架。 hibernate要做的事,就是让对象投影到关系数据库中,然后实施化。它把数据层和业务层实现的解耦,这样能很好的转化想要的数据库。

一、hibernate的核心接口:

session:负责被持久化对象CRUD操作;

sessionFactory:负责初始化hibernate,创建session对象;

configuration:负责配置启动hibernate,创建sessionFactory;

Transaction:负责事务项目的相关操作;

Query和Criteria接口:负责执行各种数据库查询;

二、hibernate的工作原理:

1、通过Configuration config=new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件

2、由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>//读取并映射信息

3、通过SessionFactory sf=config.buildSessionFactory();//创建SessionFactory

4、Session session=sf.openSession();//打开session

5、Transaction tx=session.beginTransaction();//创建并启动事务Transaction

6、persistent operate操作数据,持久化操作

7、tx.commit();//提交事务

8、关闭Session

9、关闭SessionFactory

三、hibernate的好处:

1、对JDBC访问数据库的代码封装,大大简化了数据访问层繁琐的重复代码。

2、hibernate是轻量级框架,支持各种数据库,从一对一到一对多的各种复杂关系。

四、hibernate的缓存机制:

hibernate的缓存包括两大类:一级缓存(session缓存)和二级缓存(SessionFactory缓存)

一级缓存:他是内置的,就是说只要你使用hibernate就必须使用session缓存。由于session对象的声明周期通常对应一个数据库事务或者一个应用事务,因此他的缓存时事务范围的缓存。在一级缓存中,持久化类的每个实例都具有唯一的OID。

二级缓存:由于二级缓存对象的生命周期和应用程序的整个过程对应,因此hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采取适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。二级缓存时可选的,是一个可配置的插件,默认情况下不会启动。

什么样的数据应该放在二级缓存?

1、很少被修改的数据

2、不是很重要的数据,允许出现偶尔并发的数据

3、不会被并发访问的数据

4、常量数据

不适合放在二级缓存中的数据?

1、经常被修改的数据

2、不允许出现并发访问的数据

3、与其他应用共享的数据

五、如何优化hibernate?

1、使用双向一对多关联,不适用单向。

2、使用一对多取代一对一

3、配置对象缓存,不适用集合缓存

六、get和load的区别?

1、get()方法直接返回实体类,如果查不到数据则返回null,不会报错。load()会返回一个实体代理对象,当代理对象被调用时,如果没有数据存在,就会抛出异常load支持延迟加载,get不支持。

Hibernate基础知识总结的更多相关文章

  1. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

  2. Hibernate基础知识

    Hibernate Hibernate的作用: 1.         Hibernate解决ORM(对象关系映射)的问题,大大减少了持久层的代码量 2.         hql方言,解决了可移植性问题 ...

  3. Hibernate基础知识详解

    一.Hibernate框架        Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC进行了非常轻量级的对象封装,它将POJO类与数据库表建立映射关系,是一个    全自动的O ...

  4. Hibernate基础知识介绍

    一.什么是Hibernate? Hibernate,翻译过来是冬眠的意思,其实对于对象来说就是持久化.持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘) ...

  5. hibernate 基础知识

    1.hibernate的配置文件,一般放在classpath的根目录下,默认命名为hibernate.cfg.xml,代码例子如下: <!DOCTYPE hibernate-configurat ...

  6. JVM 基础知识

    JVM 基础知识(GC) 2013-12-10 00:16 3190人阅读 评论(1) 收藏 举报 分类: Java(49) 目录(?)[+] 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看 ...

  7. Struts2入门1 Struts2基础知识

    Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...

  8. hibernate基础(1)

    hibernate基础1.hibernate介绍与动手入门体验  问题:模型不匹配(java对象模型与数据库关系模型不匹配)  解决: 1.使用JDBC手工转换        2.使用ORM(Obje ...

  9. Spring框架基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...

随机推荐

  1. Memcache服务搭建

    Memcache Memcache的作用网上资料都讲的很好,说简单点就是减轻读取数据库的压力,原理也很简单: 被请求的数据会先到memcache里去取,如果没有就去数据库里取,顺便给memcache带 ...

  2. 基于Babylonjs自制WebGL3D模型编辑器

    一.总述 当代WebGL编程所使用的3D模型大多是从3DsMax模型或Blender模型转化而来,这种工作模式比较适合3D设计师和3D程序员分工配合的场景.但对于单兵作战的WebGL爱好者来讲这种模式 ...

  3. 20155212 实验四 《Android程序设计》 实验报告

    20155212 实验四 <Android程序设计> 实验报告 (一)Android Stuidio的安装测试 参考<Java和Android开发学习指南(第二版)(EPUBIT,J ...

  4. 如何使用华为软件开发云快速部署PHP网站

    华为软件开发云这个工具,从去年推出我就一直在关注,毕竟是华为最新的一款软件开发工具,最近我一直在使用华为软件开发云进行开发项目管理,它有在线编译和构建.云端在线代码检查等功能,编译省去了很多物理机器的 ...

  5. 关于php中id设置自增后不连续的问题

    alter table tablename drop column id;alter table tablename add id mediumint(8) not null primary key ...

  6. Images as x-axis labels

    Open-source software is awesome. If I found that a piece of closed-source software was missing a fea ...

  7. Java对字符串进行的操作

    本篇总结归纳对字符串或数组进行相关操作问题 数组倒序输出 查找字符串中第一次重复的字符 查找字符串中第一次没有重复的字符 删除字符串中重复的元素 倒序输出问题 第一种:对于数组 public int[ ...

  8. java中File类中list()和listFiles()方法区别

    list()和listFiles()方法区别: 1.返回值类型不同:前者为String数组,后者为File对象数组 2.数组中元素内容不同:前者为string类型的[文件名](包含后缀名),后者为Fi ...

  9. javaSE_06Java中的数组(array)

    1.什么是数组? 顾名思义,即为数据的组合或集合,数组就是用来表示一组数据的. 比如没有数组之前,我们要存储多个姓名的信息 String name1; String name2; String nam ...

  10. 线程(java课堂笔记)

    1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一. 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同 ...