Hibernate理解?
(1)Hibernate是对象关系映射框架,对JDBC进行非常轻量级的对象封装,是全自动的ORM框架,可以自动生成SQL语句、自动执行。
(2)语言特点
<1>将对数据库的操作转换为对Java对象的操作从而简化开发。
<2>提供线程和进程两个级别的缓存提升应用程序性能。
<3>有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。
<4>非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类。
(3)Hibernate优点:
<1>封装了JDBC,简化了很多重复性代码。
<2>简化了DAO层编码工作,使开发更对象化了。
<3>移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变Hibernate代码。
<4>支持透明持久化,没有实现任何接口,没有侵入性。
(4)Hibernate核心API有6个分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这些接口可以对持久化对象进行存取、事务控制。
<1>Session接口负责执行被持久化对象的CRUD操作,Session对象是非线程安全的。
<2>SessionFactory接口负责初始化Hibernate。
<3>Query负责查询
<4>Configuration作用是对Hibernate进行配置以及对它进行启动。
(5)主键有两种:
<1>Assigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常,特点是主键的生成值完全由用户决定与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。
<2>UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。特点是能够保证数据库中的主键唯一性,生成的主键占用比较多的存贮空间。
(6)Hibernate中提供了两级Cache,第一级别的缓存是Session,它是属于事务范围的缓存。第二级别的缓存是SessionFactory,它是属于进程范围或集群范围的缓存。Hibernate还为查询结果提供了一个查询缓存它依赖于第二级缓存。
(7)Session级别的缓存:save()、update()、saveOrUpdate()、get()、load()、list()。
(8)延迟加载:get不支持延迟加载,load支持延迟加载。
(9)性能优化:
<1>使用一对多的双向关联,尽量从多的一端维护。
<2>不要使用一对一,尽量使用多对一。
<3>配置对象缓存,不要使用集合缓存。
<4>表字段要少,表关联不要怕多,有二级缓存支持。
(10)类与类之间关系:关联关系、聚集关系、继承关系。
Hibernate理解?的更多相关文章
- hibernate理解
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,基于持久层的框架(数据访问层使用)! Spring,创建对象处理对象的依赖关系以及框架整合! Dao代码,如何编 ...
- Struts 2 Spring Hibernate三大框架的执行流程以及原理
Struts2框架 一.简介 Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架.它基于当年的WebWork和XWork框架,继承其优点,同时 ...
- (Hibernate进阶)Hibernate系列——总结篇(九)
这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
- Hibernate的关联映射——单向N-1关联
Hibernate的关联映射--单向N-1关联 N-1是非常常见的关联关系,最常见的父子关系也是N-1关联,单向的N-1关联只需从N的一端可以访问1的一端. 为了让两个持久化类能够支持这种关联映射,程 ...
- Hibernate——基础及XML配置
1.入门 hibernate是跟数据库打交道的,一般跟数据库打交道的都不简单 原始.底层直接的一些操作.编码量比较大.费时.用框架高效 把原来一点一点实现的东西,现在给个半成品,不用在这上边发时间,把 ...
- web进修之—Hibernate 关系映射(3)
概述 Hibernate的关系映射是Hibernate使用的难点或者是重点(别担心,不考试哦~),按照不同的分类方式可以对这些映射关系做一个分类,如: 按对象对应关系分: 一对一 多对一/一对多 多对 ...
- SSH:Hibernate框架(七种关联关系映射及配置详解)
概念 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用. 分类 关联关系分为上述七种,但是由于相互之间有各种关系, ...
- 【SSH进阶之路】Hibernate系列——总结篇(九)
这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
- Hibernte
什么是CRM?(了解) CRM(customer relationship management)即客户关系管理,是指企业用CRM技术来管理与客户之间的关系.在不同场合下,CRM可能是一个管理学术语, ...
随机推荐
- Robot Framework(二)访问数据库
1.在Test suit中添加Library 直接输入库名,点击确定即可 DatabaseLibrary BuiltIn 2.在用例中,连接数据库,并执行sql Connect To Database ...
- macOS Sierra 如何安装任何来源的软件
为了安全性考虑,macos是要手动勾选来自任何来源的选项才可以安装第三方应用软件,系统升级后,在新的系统中这一项是默认不显示的,如果想要出现和这一勾选选项,可以从终端中输入 sudo spctl -- ...
- c# 不让窗体显示在alt tab中
protected override CreateParams CreateParams { get { const int WS_EX_APPWINDOW = 0x40000; const int ...
- JS基础_数据类型-Boolean类型
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Django框架——进阶之AJAX
<script>$("#b1").on("click", function () { // 点击 id是b1的按钮要做的事儿 var i1 = $( ...
- liboqs-量子安全密码算法开源C库
liboqs是一个用于量子安全密码算法的开源C库. 一,概述 liboqs提供: 量子安全 密钥封装机制(KEM)和数字签名算法的开源实现的集合: 这些算法的通用API: 测试工具和基准测试例程. l ...
- hdfs 配置文件详解
– dfs.name.dir – NameNode 元数据存放位置 – 默认值:使用core-site.xml中的hadoop.tmp.dir/dfs/name – dfs.block.size – ...
- zabbix-server、proxy、agent的分布式部署步骤
1.准备工作 关闭防火墙和SELinux防火墙,因为他们会限制一些访问权限,如果服务器不能关闭就需要手动设置规则,这里测试用就直接关闭了 service firewalld stop; setenfo ...
- C++中的变量属性小结
其实在C++中,一个变量除了数据类型以外,还有3种属性: (1)存储类别:C++中允许使用auto,static,register,extern 4种存储类别. (2)作用域:指在程序中可以使用该变量 ...
- redis 加锁与释放锁(分布式锁1)
使用Redis的 SETNX 命令可以实现分布式锁 SETNX key value 返回值 返回整数,具体为 - 1,当 key 的值被设置 - 0,当 key 的值没被设置 分布式锁使用 impor ...