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. LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2

    LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2 你是否遇见过:安装LNMP1.3环境后,运行ThinkPHP 3.2,只能打开首页,不能访问控制器,报404错误. 按照 ...

  2. 无限极分类class

    class Category { /** * 返回一维数组 * @static * @param array $cate 要递归的数组 * @param string $html 子级分类前要显示的缩 ...

  3. Neo4j 第二篇:图形数据库

    在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...

  4. 用node编写自己的cli工具

    工作中接到新项目,开发前都需要先规划项目目录,然后一个个创建文件,搭建sass编译环境,下载jquery,Swiper等类库... 这些准备工作都要花上不少时间.每做一个项目,都会遇到同样的问题,再重 ...

  5. Java Synchronization

    Volatile Since Java 5 the volatile keyword guarantees more than just the reading from and writing to ...

  6. Java 8 Learn Notes - Streams

    Main reference [1] http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples 1. How Stream ...

  7. 转义字符及URI编码

    URL中的转义字符 当URL的参数中出现诸如+,空格,/,?,%,#,&,=等特殊字符串符号时,因为上述字符有特殊含义,导致服务器端无法正确解析参数. 解决办法:将这些字符转化成服务器可以识别 ...

  8. nginx+tomcat集群负载均衡(实现session复制)

    转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...

  9. 8.Java 加解密技术系列之 PBE

    Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...

  10. neutron flat和vxlan网络访问外网流量走向

    OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.168.1 ...