Hibernate基础知识总结
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基础知识总结的更多相关文章
- Hibernate入门1. Hibernate基础知识入门
Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...
- Hibernate基础知识
Hibernate Hibernate的作用: 1. Hibernate解决ORM(对象关系映射)的问题,大大减少了持久层的代码量 2. hql方言,解决了可移植性问题 ...
- Hibernate基础知识详解
一.Hibernate框架 Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC进行了非常轻量级的对象封装,它将POJO类与数据库表建立映射关系,是一个 全自动的O ...
- Hibernate基础知识介绍
一.什么是Hibernate? Hibernate,翻译过来是冬眠的意思,其实对于对象来说就是持久化.持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘) ...
- hibernate 基础知识
1.hibernate的配置文件,一般放在classpath的根目录下,默认命名为hibernate.cfg.xml,代码例子如下: <!DOCTYPE hibernate-configurat ...
- JVM 基础知识
JVM 基础知识(GC) 2013-12-10 00:16 3190人阅读 评论(1) 收藏 举报 分类: Java(49) 目录(?)[+] 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看 ...
- Struts2入门1 Struts2基础知识
Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...
- hibernate基础(1)
hibernate基础1.hibernate介绍与动手入门体验 问题:模型不匹配(java对象模型与数据库关系模型不匹配) 解决: 1.使用JDBC手工转换 2.使用ORM(Obje ...
- Spring框架基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...
随机推荐
- LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2
LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2 你是否遇见过:安装LNMP1.3环境后,运行ThinkPHP 3.2,只能打开首页,不能访问控制器,报404错误. 按照 ...
- 无限极分类class
class Category { /** * 返回一维数组 * @static * @param array $cate 要递归的数组 * @param string $html 子级分类前要显示的缩 ...
- Neo4j 第二篇:图形数据库
在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...
- 用node编写自己的cli工具
工作中接到新项目,开发前都需要先规划项目目录,然后一个个创建文件,搭建sass编译环境,下载jquery,Swiper等类库... 这些准备工作都要花上不少时间.每做一个项目,都会遇到同样的问题,再重 ...
- Java Synchronization
Volatile Since Java 5 the volatile keyword guarantees more than just the reading from and writing to ...
- Java 8 Learn Notes - Streams
Main reference [1] http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples 1. How Stream ...
- 转义字符及URI编码
URL中的转义字符 当URL的参数中出现诸如+,空格,/,?,%,#,&,=等特殊字符串符号时,因为上述字符有特殊含义,导致服务器端无法正确解析参数. 解决办法:将这些字符转化成服务器可以识别 ...
- nginx+tomcat集群负载均衡(实现session复制)
转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...
- 8.Java 加解密技术系列之 PBE
Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...
- neutron flat和vxlan网络访问外网流量走向
OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.168.1 ...