Java高手谈论Hibernate的发展之路

Hibernate——建立第一个hibernate项目 背景:今天学习了考研内容。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 在Java世界,Hibernate是最引人关注的一个话题。从Gavin King加入EJB3.0 EG,负责制订EJB3.0的持久层规范;到Gavin King非正式退出JDO EG,并且充满个人情绪的攻击JDO2.0规范;到《Hibernate in Action》的发行;再到Hibernate3 Alpha的发布;最后再到最近JBoss 3.0 PR的发布(使用Hibernate3实现Entity Bean)。可以说这其中的每一步都引起业界的侧目。 Hibernate在不到3年的时间里,从一个不起眼的开源软件发展到今天令业界瞩目的主流O/R Mapping框架,Gavin King从一个开源软件的作者成为业界举足轻重的人物,这多少有些传奇的色彩。毕竟,单纯从技术成就而言,Hibernate不算是最有成就的Java开源框架软件,到目前为止也不是一个完美无缺的软件;从个人技术水平而言,Gavin King也不算绝顶高手。 在当前的Java持久层框架中,最流行的O/R Mapping产品分别是Hibernate,JDO和TopLink。 自从去年Gavin King加入JBoss之后,Hibernate已经由一个民间的开源软件走上了兼容EJB EntityBean的道路。然而更加令人侧目的是,Gavin King在EJB3.0 EG中充当了一个非常重要的角色,只要对比一下EJB3.0的EntityBean和Hibernate3,真相就会大白,虽然API接口不同,但是 EntityBean的设计理念完全来自于Hibernate。 虽然EJB3.0的EntityBean在相当程度上来源于Hibernate,但是毕竟是不同的API接口,因此Hibernate和EJB3.0 EntityBean究竟是怎样的一种关系,是很多人心中的疑问。 2004年四月份JBoss的Ben Wang访华期间,我曾经向Ben请教Hibernate的未来发展,他回答说,Hibernate未来将仍旧以独立的软件产品存在和发展,既可以 outside EJB container使用;同时Hibernate也将做为JBoss EntityBean Implementation,又可以inside EJB container使用。然而如何既inside,又outside,终究缺乏一个感性的认识。 10月8日JBoss发布的EJB3.0 PR揭开了答案。从Sourceforge的CVS服务器上面checkout出来源代码看一下,我们可以发现,Gavin King对Hibernate3进行了简单的封装,将EJB 3.0 EntityBean API调用转换为内部Hibernate3自己的API,从而实现EJB3.0 EntityBean的兼容。 EJB3.0不承诺脱离容器调用,如果你想享用EJB3.0,则必须运行在某个EJB Vendor提供的容器内,例如你使用JBoss提供的容器,那么你调用的是EntityBean API,这些调用请求会被转换为Hibernate API的调用请求。这意味着Hibernate实际上提供了两套API:一套是Hibernate原生API;另一套是兼容EJB3.0 EntityBean API。对于那些需要分布式调用支持,需要EJB容器的开发人员来说,他们选择后一套API;对于不需要EJB容器的开发人员来说,他们选择前一套 API。这就是Hibernate既定的发展策略。 今年夏天投票通过的JDO2.0标准从某种程度而言,并不逊色于Hibernate当前的版本,有些功能甚至比Hibernate还要好,例如 JDO支持对类属性的lazy loading,而Hibernate要到3才支持,当前Hibernate仅仅支持类的lazy loading。实际上在去年,就已经有很多用户不断提出对类属性的lazy loading的需求,然而Gavin King当时一直不认为这个需求有添加的必要性。再例如被Gavin King形容为“可憎的”JDOQL,实际上是类SQL查询语言和对象条件查询的混合体。从功能上来说,不如HQL强大,但是比Hibernate自己的条件查询强。 不知道究竟出于什么原因,Gavin King对JDO似乎一直怀有由衷的厌恶,5月,他在Hibernate的blog上面对JDO进行了毫不留情的批判,列举了JDO的种种缺点来解释为什么EJB3持久层规范没有把JDO考虑进去。然而事实上他的批判充满了对JDO的误解和偏见,例如Gavin King憎恨JDOQL丝毫没有什么特别的理由,只因为JDOQL不是一个纯粹的查询语言,而是一个混合体,这多少让人对Gavin King的风度感到遗憾。在被SolarMetric的Abe White反驳之后,同样没有风度的说,“我可没有时间做这种无谓的争论,事实上每个人都认为他自己的技术是最好的……我是错了,JDO那伙人也错了,每个人都会犯错误……”。(所以说人无完人阿!) JDO2规范的出台事实上构成了对Hibernate,乃至基于Hibernate理念的EJB3.0 EntityBean的严重威胁。JDO1.0规范在功能上的严重缺失导致了JDO无力面对Hibernate和TopLink的竞争,然而功能基本完备的JDO2挟众多JDO Vendor商业支持的合力,同时JDO规范可以避免产品锁定在某个Vendor的优势,已经将竞争的天平拉直。 然而JDO2和EJB3两大商业主流标准的分裂,是大部分人,甚至包括厂商所不希望看到的。 于是最终EJB3的Lead Linda DeMichiel和JDO2的Lead Craig Russell联名发表公开信,宣布了一个合并EJB3和JDO2持久层规范的计划,新的持久层规范将以JSR-220(EJB3.0)的持久层规范为基础,融合JDO2的部分特性。新的持久层规范将进入J2EE1.5之中,独立于EJB存在,既可以inside J2EE容器来使用,也可以脱离J2EE容器,独立的运行。 这个新的持久层框架可以说完全是一个政治的产物。EJB Vendors出于自身利益反对JDO,使得JDO没有办法成为J2EE的一部分,然而标准的分裂也是大部分人更加不希望看到的,于是最终JDO成了政治斗争的牺牲品。从表面上来看,JDO和EJB3.0 EntityBean都将被新的持久层框架取代,似乎JDO并没有吃亏,但实际上JDO2标准已经成熟,部分JDO领导厂商的产品已经蓄始待发,而 EJB3.0 EntityBean还处于Early Draft,等待产品诞生至少也是一年之后的事情了;另外值得耐人寻味的是,新的持久层框架将基于当前EJB3.0 EntityBean,再结合JDO2的规范,并且将处于EJB3.0 EG的控制之下,再加入一些JDO2 EG的成员。因此可以看出来新的持久层框架无疑还是以EJB3.0 EG为主导进行制定的。 从长远来看,EJB3和JDO2的政治斗争对双方都有好处,长期分裂带来的后果对双方的发展都不利,然而从短期来看,JDO2确实是在这场政治斗争中败下阵来。最直接的体现就是,已经有一些JDO的用户对JDO的前景产生了动摇和迷茫,不少的JDO爱好者更是直言JDO将死。 TopLink是一个老牌的O/R Mapping软件了,自从被Oracle收购之后,又增加了对Oracle数据库的良好支持,和对Oracle AS EntityBean的支持。Oracle提供了TopLink的图形设计环境,可以使得设计好的TopLink域模型既可以被单独用在TopLink 中,也可以被用在EJB CMP中。因此看来TopLink也走了一条和Hibernate同样策略的路。 TopLink的问题在于相比Hibernate的开源和免费的优势来说,TopLink既不开源,售价又不菲上。本来商业软件TopLink应该在技术支持和商业宣传策略上拥有足够的优势,然而Oracle公司毕竟是一个以数据库为核心产品的公司,其他的一切产品都是为了数据库销售业绩而服务的。在Oracle产品线中处于一个从属地位的TopLink,由于先天不足,只能眼睁睁看着Hibernate的日益壮大而无所作为,因此 TopLink更多的被局限在购买了Oracle数据库,并且绑定Oracle数据库的用户群体中。 J2EE1.5的新持久层规范将毫无悬念的成为未来持久层框架的主流API,无论是Hibernate,JDO,还是TopLink终将兼容这个主流商业API。在当前的这三种持久层API当中,Hibernate无疑是最有前途的。这是因为: 1、新的持久层规范将基于EJB3.0 EntityBean规范,这意味着仍将以Hibernate的设计理念为基础 2、JBoss对EJB3.0规范跟随的步伐非常紧密,在规范制定过程中就不断的发布参考实现产品,因此可以对对EJB3.0规范产生比较大的影响力。 综上所述,我们有理由对Hibernate的前途抱有强烈的信心。 最后的一个疑问是,既然J2EE1.5的新持久层框架可以脱离J2EE容器运行,那么大家不全部都去用Hibernate的后一套兼容API,而完全放弃Hibernate的原生API了吗?那么是否意味着Hibernate做为一个独立产品的使命彻底终结呢? 对于这个问题我的看法是:J2EE1.5的持久层规范要综合各个EJB Vendor,JDO Vendor的意见,要平衡他们之间的利益得失,那么这样一个瞻前顾后的规范必然无法覆盖所有应用场合的全面需要,这不像Hibernate的原生API 可以随时根据开发人员的要求增加功能那么灵活。因此我预计Hibernate的原生API以其更加强大的功能仍然会吸引一大批人直接使用原生API,而不是兼容J2EE规范的API。 总而言之,对于我们当前的持久层开发来说,最好的办法莫过于坚定的使用DAO层来隔离持久层和业务层逻辑,那么不管未来持久层风云如何变换,但凡基于POJO的持久层框架都可以被我们拿来任意替换。
Java Hibernate与Spring Boot集成实战教程 Java语言以其跨平台、面向对象的特性而闻名。通过Java虚拟机(JVM)的抽象,Java代码能够在不同的操作系统上以“一次编写,到处运行”的方式执行,极大地提高了开发的灵活性和软件的可移植性。对象关系映射(Object-Relational Mapping,简称ORM)技术是一种在关系数据库和对象之间进行自动映射的技术。它通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。ORM框架减少了开发者直接编写SQL代码的需要,使得数据库操作更加面向对象。 阅读详情

相关推荐

技术解析:PETR如何通过3D位置编码革新多视角3D目标检测

本文深入解析了PETR模型如何通过创新的3D位置编码技术革新多视角3D目标检测。它摒弃了DETR3D复杂的投影采样机制,通过3D坐标生成器和编码器,将3D几何信息直接注入2D图像特征,构建出3D感知特征。该方法简化了流程,提升了模型对空间关系的理解能力与训练稳定性,为自动驾驶等领域的精准感知提供了新思路。

weixin_29079743的博客 213

Java发展史

Java 作为一种广泛使用的计算机编程语言,拥有着丰富的发展历程。

hqxstudying的博客 1064

Unity2018连接MySQL数据库

当前在做的一个Unity项目需要连接到MySQL数据库,弄了一整天,排了很多错,终于在Unity上成功连接到MySQL数据库了,所以分享一下,避免有这个需求的朋友不用花那么多时间。 我使用的软件是 Unity20184.0f1 + mysql-8.0.24 导入 MySql.Data.dll 首先需要把 MySql.Data.dll 导入到Assets/Plugins 这个dll需要安装Connector/NET,在安装目录\Assemblies\v4.0中拿到,最好不要下载版本太高的,版本太高导入的时候

ZLX的博客 9451

Java的发展应用以及前景

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @java的前世今生 前言 Java的发展前景很好,随着经济的迅猛发展,科学技术不断进步,用于计算机软件开发的Java编程语言也迅速发展起来,由于其高性能,高收益的特点,被广泛应用在计算机软件的开发上,是发展最快的计算机语言,互联网已经广泛地深入到人们的生活,Java市场需求空缺越来越大。 一、Java是什么? java语言具有功能强大和简单易用两个特征,具有简单性、面向对象、分布式等特点,可以编写桌面应用程序、Web应用程序、分布式系统.

qq_62277444的博客 5159

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2237

VMware 17+Win10 22H2全栈配置指南|UEFI优化+GPU直通实战

​VMware下载:下载官网版本的Wmare 17 Pro (点击直达链接 )企业用户可选永久许可证,个人学习也可以直接安装使用,Win10镜像:微软官网下载22H2版ISO文件(附官方纯净版渠道 )

waicsdn_haha的博客 4021

Hibernate的未来发展之路

Hibernate的未来发展之路 最近半年多来,在Java世界,Hibernate是最引人关注的一个话题。从Gavin King加入EJB3.0 EG,负责制订EJB3.0的持久层规范;到Gavin King非正式退出JDO EG,并且充满个人情绪的攻击JDO2.0规范;到《Hibernate in Action》的发行;再到Hibernate3 Alpha的发布;最后再到最近JBoss 3.0

neujyj的专栏 1372

USRP N210与MATLAB连接实战:从驱动安装到信号接收

本文详细介绍了USRP N210与MATLAB连接的完整流程,涵盖驱动安装、网络配置、支持包安装及信号接收实战。重点解决了安装过程中的常见错误和硬件连接问题,并通过MATLAB代码示例展示了如何配置接收器、处理信号数据,帮助用户快速实现从设备对接到信号分析的全过程。

blue的专栏 821

认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?

Hibernate 作为一种全自动 ORM 框架,在几年前常与 Spring、Struts2 一起使用。伴随着 MyBatis 的诞生,以及 Hibernate 本身的一些缺陷,如今 Hibernate 已经慢慢淡出了大家的视野。 有时我们还会将其与 MyBatis 做一些对比,不过由于很多同学没有使用过它,可能查阅一些资料后还是云里雾里的,因此有必要对 Hibernate 有一个入门级的认识。.........

大鹏的博客 1353

python 实现一个完整的基于Python的多视角三维重建系统,包含特征提取与匹配、相机位姿估计、三维重建、优化和可视化等功能

本文介绍了一个基于Python的多视角三维重建系统的实现,涵盖了特征提取与匹配、相机位姿估计、三维重建、优化和可视化等功能。首先,系统通过安装必要的库(如OpenCV、NumPy等)并加载图像数据,初始化相机参数。接着,系统使用SIFT、SURF或ORB算法提取图像特征点,并通过FLANN或BF方法进行特征匹配,应用Lowe's ratio test筛选优质匹配。该系统为后续的相机位姿估计和三维重建奠定了基础,能够从多视角图像中恢复三维场景结构。

huanghm88的专栏 618

Trimble RealWorks处理点云数据(一)之坐标转换

Trimble RealWorks处理点云数据之坐标转换

yilvyangguang520的博客 3625

java synchronicity_[转载]Hibernate创始人谈ORM、Java的发展

作为Hibernate的创始人,Gavin King身上充满着传奇,坊间流传着很多关于他过往的“英雄”事迹,比如他在设计Hibernate时对SQL知识竟然一点儿也不懂,比如他对Spring创始人Rod Jonathan的“恶语相加”。在上周举行的Red Hat大会上,又听说Gavin在来北京的前两天因为骑摩托车速度太快,被摔成轻微脑震荡。不过所有的这些都不影响Gavin对技术的热忱和独立观点。O...

weixin_35725389的博客 102

⚡【C++要笑着学】(13) STL介绍:什么是STL标准模板库 | STL的版本 | 浅谈STL的缺陷

再讲解函数模板之前先对STL做一个小铺垫,本篇将对STL做一个简单的介绍。

有道无术, 术尚可求。有术无道, 止于术。 3037

Java中的Hibernate是什么?如何使用Hibernate

总之,Transaction是Hibernate架构中非常重要的组件,它确保了Java应用程序与数据库之间的顺畅通信,并提供了许多其他有用的功能。总之,Session是Hibernate中非常重要的组件,它为开发人员提供了一种简单而强大的方式来管理Java应用程序与关系数据库之间的交互,并使得进行CRUD操作和数据检索变得更加容易和高效。总之,实体类应该是与Hibernate框架兼容的Java类,它应该定义数据库表中的列,并提供用于访问和操作这些列的方法。实体类应该包含与数据库表中的列对应的属性。

2301_77769537的博客 3669

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java中hibernate_java的hibernate创建步骤

1. 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。其中HIBERNATE的轻量级 ORM 模型逐步确立了在 JAVA ORM 架构中领导地位,甚至取代复杂而又繁琐的 EJB ...

weixin_36410567的博客 363

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hibernate的发展和特点以及Hibernate的工作原理简介

1.Hibernate的发展和特点: (1).Hibernate介绍:Hibernate是封装了JDBC的一种开放源代码的对象/关系映射(ORM Object-Relatiion Mapping)框架,使程序员可以使用面向对象的思想来操作数据库。Hibernate是一种对象/关系映射的解决方案,即将Java对象与对象之间的关系映射到数据库中表与表之间的关系。 (2).Hibernate

茕夜 6946

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hibernate 发展之路

來源:http://www.blogjava.net/zhangxv/archive/2006/03/02/33167.html 在Java世界,Hibernate是最引人关注的一个话题。从Gavin King加入EJB3.0 EG,负责制订EJB3.0的持久层规范;到Gavin King非正式退出JDO EG,并且充满个人情绪的攻击JDO2.0规范;到《Hibernate i

xyzroundo的专栏 749

Java的JDBC与Hibernate

1.背景介绍 1. 背景介绍 Java Database Connectivity(JDBC)是Java语言中与数据库通信的一种标准接口。它提供了一种抽象的方式来访问数据库,使得Java程序可以与各种数据库进行交互。Hibernate是一个高级的Java持久化框架,它使用对象关系映射(ORM)技术将Java对象映射到关系数据库中的表,从而实现对数据库的操作。 在本文中,我们将讨论JDBC和H...

AI天才研究院 353

hibernate搭建java_[置顶] 【hibernate进阶】hibernate搭建开发环境+实例讲解

本篇博客将带着大家以一个简单的实例来学习hibernate项目。1、创建java项目2、创建User Library,加入依赖包* HIBERNATE_HOME/lib/*.jar* HIBERNATE_HOME/hibernate3.jar* 加入数据库驱动(mysql驱动)具体的操作步骤参考我的上一篇博客:【hibernate进阶】如何在myeclipse中添加jar包3、提供hibernat...

weixin_42472263的博客 188

【Java学习路线之JavaWeb】Hibernate框架入门教程_java hibernate

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示。由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!student 表为学生表,id 为学生表的主键,name 表示学生名称;grade 表为班级表,id 为班级表的主键,name 表示班级名称;gid 为学生表的外键,指向班级表的主键 id;

pCITv1C的博客 806

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结

我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手。 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉

ywl470812087的博客 13万+

Java Hibernate学习

Hibernate Hibernate简介 Hibernate实战 代码和教程来自how2java网站,通过自己的消化、补充自己的理解。 实现插入 首先,做一些建库、建表的工作: create database test; use test; CREATE TABLE product_ ( id int(11) NOT NULL AUTO_INCREMENT, name varchar...

xiabenshu的博客 3882

JAVA框架 / HIBERNATE / HIBERNATE系列教材 (一)- 基础 - HIBERNATE 基于实例的入门教程

JAVA 框架 / HIBERNATE / HIBERNATE系列教材 (一)- 基础 - HIBERNATE 基于实例的入门教程 #原文链接在这里 使用JDBC做数据库相关功能开发会做很多重复性的工作,比如创建连接,关闭连接,把字段逐一映射到属性中。 Hibernate把这一切都封装起来了,使得数据库访问变得轻松而简单,代码也更加容易维护。 第一次使用Hibernate会有一个比较多步骤的配置过...

weixin_44092440的博客 324

Java的Hibernate与ORM

1.背景介绍 1. 背景介绍 Hibernate是一个流行的Java对象关系映射(ORM)框架,它使用Java代码来表示数据库中的表、列、行和查询。Hibernate的核心概念是将Java对象映射到数据库表,使得开发人员可以以Java对象的形式操作数据库,而不需要直接编写SQL查询语句。 Hibernate的设计目标是提供一种简单易用的方式来处理数据库操作,以便开发人员可以更多地关注业务逻辑...

AI天才研究院 1106

Hibernate创始人谈ORM、Java的发展

作为Hibernate的创始人,Gavin King身上充满着传奇,坊间流传着很多关于他过往的“英雄”事迹,比如他在设计Hibernate时对SQL知识竟然一点儿也不懂,比如他对Spring创始人Rod Jonathan的“恶语相加”。在上周举行的Red Hat大会上,又听说Gavin在来北京的前两天因为骑摩托车速度太快,被摔成轻微脑震荡。不过所有的这些都不影响Gavin对技术的热忱和独立观点。\...

啊啊啊啊2 258
上一篇: J2EE应用中常见的反模式(anti-patterns)
下一篇: JDBC 4.0规范之目标
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值