java必备——经典的Hibernate

在编程开发中,我们有非常多框架,他们有些非常方便,也非常有用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为“冬眠”。这是个非常有意思的技术,相同这个名字也非常巧妙!

大家先看看这个技术的书籍在国外的封面:

简单介绍:

大家知道冬眠的动物是精巧的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现。这两者有什么联系?

简介数据持久化:

数据持久化是解决程序与数据库之间交互訪问的问题,使程序不直接訪问数据库,而是直接訪问Session会话,然后由Session会话与数据库“打交道”。

仅仅要确保,程序每次訪问Session中的数据时,与数据库中的数据保持一致,就不会出现错误。

而冬眠的功效就会由这个Session会话体现,我们的程序不直接面对数据库,延迟(冬眠)到Session会话,我们能够将Session会话理解为缓存!

你好奇吗?这个实现是怎么完毕的呢?

我们先宏观上看看他的神奇面纱:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZzaHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

而我们看看採用ORM之后的优点和缺点

长处:

1,提高生产力——轻松开发

2,更加对象化——消除关系领域——阻抗不匹配

3,可移植性——请

4,没有侵入性——測试简单,支持透明持久化

缺点:

1,数据库特性语句——难调优

2,对大批量数据更新有问题

3,系统中存在大量统计查询——混合应用

而在此,Hibernate对我们最大的帮助就是使我们採用对象化思维操作关系型数据库!

思考:

这是新技术吗?

这不是新技术。仅仅是某个人对这个技术的实现做得比較完好,适合大部分的开发者。在时间的作用力下。逐步推广。Hibernate就貌似是个独立的技术,事实上我们在VB的阶段就接触过这类的思想。我们在VB编写某机房收银系统时,在一个特殊的模块封装了对数据库的系列操作。包含获取ODBC连接。释放连接等,这时我们已经对数据库的操作做了一个简单的封装。

到了C#阶段,我们个人重构和合作开发期间,我们不只做到了VB对数据库连接的封装,我们对表的操作也做了一系列的封装。大家看看这个类图:

对照:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHZzaHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

而在Hibernate中。我们看看他的结构:

我们发现,在学习Hibernate时。这项技术,是我们想对象化操作数据库,而不用考虑详细结构的一个非常好实现,我们曾经的自己实现的能够说是Hibernate的一个雏形。而在Hibernate中,除了这些,另一个不错的技术体现了他冬眠的另一层含义:

延迟载入

这样的初始化策略仅仅在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。这个过程对开发人员来说是透明的,并且仅仅进行了非常少的数据库操作请求,因此会得到比較明显的性能提升。

自己理解:

他的这样的技术。是将数据库的封装好的关系在使用对象调用时,延迟载入,仅仅有我调用了这个关系,我才会载入关系附属的那些对象,这样,假设我们仅仅使用一个对象,就不会调用关系映射给他的对象!

生活中的映射:

这些技术在生活中的有应用吗?这必定是有应用的。或许你想不到,我们天天在用!

一个最简单的样例,开会,我们在生活中,每一个小区都会有居委会,每一个城区都会有区级管理机构,国家开会,会有各级人大代表,而这些机制就是我们延迟载入的一个映射,比方A县城下有B,C,D三个城区。市里布置任务,A县代表去开会,带着B.C.D三个城区的代表。市里有任务是对A说的,除非详细到某个城区。否则BCD就不用出现。而一旦有详细任务,详细到某个区,仅仅要暂时叫到会议室就OK了!

总结:

Hibernate,这首先是个单词,在生活中有它实际的含义。然后才是某项技术的名字或者叫代号,而这两者必定有着千丝万缕的联系,而他的由来也必定有一个巧妙的故事,我们不识Hibernate是应为以为他是新技术。我们认识Hibernate,是学过后认为他不识新技术,我们使用Hibernate是由于他较好地攻克了我们的难题!

总之,这个技术的兴起。不是由于太新颖。而是我们太熟悉。太渴望!

时间: 2024-10-19 18:07:01

java必备——经典的Hibernate的相关文章

java框架——经典的Hibernate

在编程开发中,我们有很多框架,他们有些很方便,也很实用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠",这是个很有意思的技术,同样这个名字也很巧妙!大家先看看这个技术的书籍在国外的封面: 简介: 大家知道冬眠的动物是静止的,在冻僵的边缘,而Hibernate的一个巨大作用就是对数据持久化的实现,这两者有什么联系? 简单介绍数据持久化: 数据持久化是解决程序与数据库之间交互访问的问题,使程序不直接访问数据库,而是直接访问Session会话

JAVA必备——Struts

在我们的开发中,有一个经典的框架,就是SSH,他们分别是:Struts,Spring,Hibernate,我们队他们神交已久,在以前的博客中我介绍了Hibernate,今天我们也逐步揭开Struts的神秘面纱,一起来看看这个熟悉的老朋友! 简介 首先我们还是去维基百科上看看他的介绍: Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/JSP技术,实现了基于Java

Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataPro

1.错误描写叙述 信息: MLog clients using java 1.4+ standard logging. 2014-7-12 19:29:20 com.mchange.v2.c3p0.C3P0Registry banner 信息: Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10] 2014-7-12 19:29:21 org.springframework.w

Hibernate常见错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe

hibernate4 与 spring3有点冲突 http://blog.csdn.net/gyflyx/article/details/7632645 整合NoSuchMethodError错误 and 升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决 2012-02-20 10:33:28|  分类: 编程_SSH |字号 订阅 我使用的是hibernate4和spring3,然后报的错误是 java.lang.NoSuchMethodError: or

java多线程经典案例

/** * 典型案例:子线程执行10次,主线程执行100次,两者交替50次. */ package cn.itcast.lesson4; public class TestWaitNotify { public static void main(String[] args){ final Business business= new Business(); new Thread( new Runnable() { public void run() { for(int i=1;i<=50;i++

Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition

1.错误描述 java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition; at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2570) at java.lang.Class.getDeclaredMethods(Class.java:1855)

Caused by: java.lang.ClassNotFoundException: org.hibernate.impl.SessionImpl

1.错误描述 2015-09-20 23:02:58 [main] WARN org.springframework.context.support.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: Error cre

java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataProvider

Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/MetadataProvider    at java.lang.Class.getDeclaredConstructors0(Native Method)    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)    at java.lan

JAVA必备——EJB,通向大型软件的路!

从接触java开始,就对java的标准,神交已久,今天先给大家简单介绍下,什么事ejb,然后咱们一起完成一个小例子,完成对ejb的熟悉过程,在这其间一起体会ejb带给我们的编码变化! 简介(来自百度): EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和