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可能是一个管理学术语, ...
随机推荐
- leetcode hard
# Title Solution Acceptance Difficulty Frequency 4 Median of Two Sorted Arrays 27.2% Hard ...
- deepin 15.10.1 GTX1060 NVIDIA 驱动安装,双屏显示问题记录
有一段时间没有用Linux了.由于买了个4k的戴尔显示屏,在deepin系统上无法用,从昨晚到现在,总于解决了我的问题! 问题1:无法直接在深度的显卡驱动管理器哪里直接切换,网上看到很多人都有这个问题 ...
- Linux内核、mysql内核、Tcp/Ip内核、java等知识书籍
LINUX <linux内核设计与实现>(2011年出版,链接:https://pan.baidu.com/s/107hriLNVt05A8egeU8Du-g 密码:0cgn) < ...
- luogu题解 UVA1615 【Highway】
题目链接: https://www.luogu.org/problemnew/show/UVA1615 分析: 首先这里的距离是欧几里得距离而不是曼哈顿距离. 然后我们对于每个点,求出在公路上保持D范 ...
- 禁止ios10双指缩放
document.addEventListener('gesturestart', function(event) { event.preventDefault(); });
- jenkins操作TreeView,展开合并
双击treeview 双击选中的部分,使treeview展开合并 Opt() #include <GUIConstantsEx.au3> #include <GuiTreeView. ...
- pytorch简单框架
网络搭建: mynn.py: import torchfrom torch import nnclass mynn(nn.Module): def __init__(self): super(mynn ...
- 关于Linux防火墙的问题以及关闭,试一下这四条命令
关闭防火墙,依次执行以下四条命令 临时服务 service firewalld stop 永久关闭 chkconfig iptables off 列出所有规则 iptables -L 清除所有规则,可 ...
- ab测试工具的使用
下载地址:http://httpd.apache.org/download.cgi#apache24 编译安装后在安装目录bin下可以找到ab执行程序 基本用法: ab -n 5000 -c 1000 ...
- 常用的排序算法介绍和在JAVA的实现(一)
一.写随笔的原因:排序比较常用,借此文介绍下排序常用的算法及实现,借此来MARK一下,方便以后的复习.(本人总是忘得比较快) 二.具体的内容: 1.插入排序 插入排序:在前面已经排好序的序列中找到合适 ...