ORM进阶:Hibernate的优劣对照
hibernate是一种是轻量级的ORMapping框架。学过EntityFramework的。会感觉挺亲切的。
对于各种层次程序猿对数据库的设计:
小菜程序员这样做:首先考虑数据的存储,对于功能的实现,怎样方便怎样来。
至于说冗余神马的。不予考虑。
资深程序员这样做:首先设计数据库的关系模型。用工具画画ER图,或者画一下物理模型。
考虑一下关系模型。好点儿的懂得利用工具。把设计好的模型转换成数据库脚本。
然后扔数据库里。然后,在功能实现过程中,对于难以实现的功能。算啦,还是改动一下数据库。
这样好做多了。
骨灰级程序员这样做:首先分析业务需求,设计对象模型。
考虑各种多重度,维护关系等等。
考虑数据的存储性能,数据量的影响……
以上纯属…………
在面向对象的世界中,对象模型是很重要的。由于面向对象的思想使得职责更加清晰。
使用面向对象的编程。开发过程中。能够不用考虑表结构。脑子里没有表的概念。仅仅对对象进行操作。
hibernate作为持久层:
使用hibernate的优点:
、使开发者职责专一。hibernate自己封装了一套机制。通过对象模型和*.hbm.xml配置信息,自己主动的将对象模型转换成表结构。
使得开发者。仅仅关注对象,忽略表结构。面向对象的开发。
、持久层easy更换。hibernate是轻量级的持久层框架。也easy进行更换。
比方更换存储方式。仅仅须要改动*.hbm.xml文件就可以。又一次生成表结构。
而代码不用进行改动。所以使用hibernate更加easy进行转换
、提高了编码效率。使用hibernate作为持久层。省去了JDBC代码。使得业务层开发者不须要考虑数据的逻辑结构,仅仅关心业务的数据实体。
Hibernate的缺点:
、不灵活。
既然操作的都是对象,相比与使用传统的sql语句来说。不方便。
、实现复杂。
并且非常多复杂的查询sql语句,非常难用hibernate进行查询。所以对于程序的调优来说有困难。
、大数据处理慢。
对象模型和关系模型的转换,将带来时间消耗。所以hibernate对大批量的数据操作还存在问题。
ORM进阶:Hibernate的优劣对照的更多相关文章
- ORM进阶:Hibernate框架搭建及开发
本节将開始.使用hibernate搭建持久层.当然在决定用不用之前,还请斟酌一下是否使用.了解一下Hibernate的优缺点. Hibernate优劣对照 Hibernate是一个持久的ORM框架.首 ...
- ORM进阶之Hibernate 的三大对象
ORM进阶之 ORM简单介绍 ORM进阶之Hibernate 简单介绍及框架搭 ORM进阶之Hibernate 的三大对象 我们在上一篇博客中讲到了怎样搭建一个Hibernate框架, 提到Hiber ...
- ORM进阶之Hibernate中对象的三大状态解析
ORM进阶之 ORM简单介绍 ORM进阶之Hibernate简单介绍及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 在Hibernatea中每一 ...
- Django中的ORM进阶操作
Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- django框架基础-ORM进阶-长期维护
############### ORM进阶---contenttype ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...
- ORM和Hibernate的配置方式
分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...
- JPA与ORM以及Hibernate
随机推荐
- luoguP1419 寻找段落(二分答案+单调队列)
题意 给定一个长度为n的序列a1~an,从中选取一段长度在s到t之间的连续一段使其平均值最大.(n<=100000) 题解 二分答案平均值. judge时把每一个a[i]-mid得到b[i] 在 ...
- [NOIP2010提高组]引水入城
题目:洛谷P1514.Vijos P1777.codevs1066. 题目大意:有一个$n×m$的矩阵,每个点都有一个高度,可以在第一行的任意点建立蓄水厂.现在要把水输到最后一行的所有点上,规定水只能 ...
- 20180929 北京大学 人工智能实践:Tensorflow笔记04
20180929 北京大学 人工智能实践:Tensorflow笔记03(2018-09-30 00:01)
- Win10+TensorFlow-gpu pip方式安装,anaconda方式安装
中文官网安装教程:https://www.tensorflow.org/install/install_windows#determine_how_to_install_tensorflow 1.安装 ...
- 【AHOI2013】【BZOJ3238】差异
Description Input 一行,一个字符串S Output 一行.一个整数.表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N< ...
- 数字信号处理C语言集(1.1 随机数的产生)
main.cpp 所建工程文件如下图所示 uniform.h #ifndef _UNIFORM_H_ #define _UNIFORM_H_ double uniform(double a,doub ...
- thinkphp路由的作用
thinkphp路由的作用 问题 请问一下什么是thinkPHP路由,路由有什么作用?谢谢 解答 网络访问地址从来都是映射访问的,最初是这样,主机名(电脑名称)=>ip地址(如局域网192.16 ...
- 轻松掌握Ubuntu Linux的3D桌面快捷键使用
视频下载地址: http://115.com/file/be4n23v6#linux3d.rar 轻松掌握Ubuntu Linux的3D桌面快捷键使用 高级3D桌面展示 本文出自 "李晨光原 ...
- SQL中union union all 和in的查询效率问题
UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复 1.UNION 的语法如下: [SQL 语句 1] UNION [SQL 语句 ...
- 详解:Linux Chrony 设置服务器集群同步时间
导读: Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让 ...