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
随机推荐
- Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】
2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...
- [SDOI2011]消防(树的直径)
[SDOI2011]消防 题目描述 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情, ...
- STM32中断名词
1.NVIC的优先级概念 占先式优先级 (pre-emption priority): 高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套. ...
- 【SRM 717 div2 B】LexmaxReplace
Problem Statement Alice has a string s of lowercase letters. The string is written on a wall. Alice ...
- 开源企业IM-免费企业即时通讯-ENTBOOST V0.9版本号公布
ENTBOOST V0.9版本号公布,更新内容:1.完好多人群组聊天,提高群组聊天性能及稳定性:2.苹果IOS SDK.添加联系人管理功能,优化API和内部流程.修复部分BUG.3.添加企业应用功能集 ...
- CCNP路由实验之十 组播(多播)
CCNP路由实验之十 组播(多播) 种方法: 在交换机上配置静态的多播MAC地址到用户接口的映射 使用CGMP.执行CGMP的多播路由器能够将用户发送给自己 ...
- 离线安装 Chrome
离线安装 Chrome 在这个帮助网页中最下面切换到中文 https://support.google.com/chrome/answer/95346 在网页的中上部点击 "离线安装 Chr ...
- @Transactional 事务注解
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.SERIALIZABLE, rollbackFor = ...
- BZOJ 3224 平衡树模板题
Treap: //By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int n, ...
- JWT 使用介绍
转载收藏于 http://www.cnblogs.com/zjutzz/p/5790180.html JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为: A.B.C A由JW ...