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
随机推荐
- easyui-combobox实现取值范围的联动
需求:需要用两个combobox来输入一个年月的范围,下拉框的内容从服务器获取.需要实现选中前者后,后者的下拉框中不能显示比前者数值小的:选中后者后,前者的下拉框内容不能显示比后者数值大的 有两个co ...
- div和css:行内元素和块元素的水平和垂直居中
行内元素: 水平居中:text-align:center ul水平居中:加 display:table; margin:0 auto; 此元素会作为块级表格来显示(类似 <table>), ...
- TCP 三次握手,四次挥手
TCP 三次握手,四次挥手 1. TCP 三次握手 建立连接前,客户端和服务端需要通过握手来确认对方: 客户端发送 syn(同步序列编号) 请求,进入 syn_send 状态,等待确认 服务端接收并确 ...
- COGS——T1310. [HAOI2006]聪明的猴子
http://cogs.pro/cogs/problem/problem.php?pid=1310 ★ 输入文件:monkey.in 输出文件:monkey.out 简单对比时间限制:1 ...
- [Recompose] Configure Recompose to Build React Components from RxJS Streams
Recompose provides helper functions to stream props using an Observable library of your choice into ...
- 两天学会DirectX 3D之入门
环境配置以及背景知识 环境 Windows 8.1 64bit VS2013 Microsoft DirectX SDK (June 2010) NVDIA Geforce GT755 环境的配置參考 ...
- vue18 动画
<!-- bower-> (前端)包管理器 npm install bower -g 验证: bower --version bower install <包名> bower ...
- vue8 生命周期
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux常用截图软件
1.Gnome-screenshot 是一款 GNOME 截图工具,顾名思义,它是一款用来对整个屏幕.一个特定的窗口或者用户所定义一些其他区域进行捕获的工具.该工具提供了几个其他的功能,包括对所捕获的 ...
- css line-height详解
行高指的是文本行的基线间的距离(更简单来说,行高是指文字尺寸与行距之间的和). 而基线(Base line),指的是一行字横排时下沿的基础线, 基线并不是汉字的下端沿,而是英文字母x的下端沿,同时还有 ...