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 , 一个开源的框架 , ...
随机推荐
- 密码学之DES/AES算法
本文示例代码详见:https://github.com/52fhy/crypt-demo DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算 ...
- 我总结的常用sql语句
建表: Set sql_mode='strict_trans_tables': 存储引擎启用严格模式,非法数据值被拒绝 Create table t3(id int(4) primary key a ...
- Swift 入门之简单语法(五)
面向对象 目标 构造函数 构造函数的基本概念 构造函数的执行顺序 KVC 在构造函数中的使用及原理 便利构造函数 析构函数 区分 重载 和 重写 懒加载 只读属性(计算型属性) 设置模型数据(didS ...
- Lambda应用场景和使用实例
Java 8已经推出一段时间了,Lambda是其中最火的主题,不仅仅是因为语法的改变,更重要的是带来了函数式编程的思想.这篇文章主要聊聊Lambda的应用场景及其相关使用示例. Java为何需要Lam ...
- 关于微信小程序的的总结
微信小程序学完了,给大家分享一些自己学小程序的心得,希望能帮到大家. 首先,我谈谈小程序数据绑定的那一块,所有从本地或者远程服务器的API传过来,都必须绑定到data: {}, 绑定格式是一个一个的键 ...
- Zepto源码分析-form模块
源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...
- [HDU1001] Sum Problem
Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, ...
- loadrunner提高篇-结果分析实践
分析图合并 一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单 ...
- centos nginx-1.10.3 安装
wget http://nginx.org/download/nginx-1.13.1.tar.gz nginx 依赖 pcre 库,要先安装pcre,因为nginx 要在rewrite 要解析正则表 ...
- 用Python玩微信(非常详细)
代码放在这里:wzyonggege/python-wechat-itchat 词云那里可以换成小黄人图片 ----------------------------------------------- ...