Hibernate典型的映射关系
1. Class <-> Table
一个Class一般可以映射为一个Table,一个Class的实例对应Table的一行数据。但是,一个Table中的每行数据,一般都需要有一个主键来唯一标识这行数据,而一个Class的每个实例,则不一定需要一个唯一标识。
2. Property <-> Field
一个Class的Property一般可以直接映射为Table的一个Field。但是,他们的数据类型不一定直接匹配。如果他们代表的数据类型的语义上可转换,则Field的类型,应大于等于Property的数据类型。如果他们代表的类型语义上不可转换,则需要在应用程序层面,进行自定义的转换。
这种映射太狭隘了,它要求:R是固定的,而O和M是相关的,即映射关系是预先定义好的,因此类和表结构是按照映射关系对应起来的,这样是不是太死板了,相应地导致了维护的复杂性
但是,我认为广义的ORM应该是:O是独立,M也是独立的,而R是可变的,即类和表结构是独立存在的,它们之间通过动态的映射关系进行关联起来,这样无论是类结构变化,还是表结构变化,或者两者全部变化,我们只需要动态调节映射关系就可以了
举个简单的例子:
Hibernate要求BO类与表结构一一对应,无论是改表结构还是改类,另一方都要进行相应的变化,维护起来何其麻烦,需要开发人员与DBA进行更多地协调工作
而且我们进行数据库查询的时候,往往也不是查询某一张表,复杂的业务逻辑往往是需要我们进行多表关联然后取其中几个字段而已
我们的类的定义往往是按照业务逻辑来划分的,而数据库表结构则考虑更多的是数据的共享和冗余,关注点经常不是一致的,这种情况下,我们不但需要建立诸多和表结构一致的类,还要再自定义和逻辑相关的类,然后不断地从各个BO对象中拷贝属性到一个业务逻辑类,这些无聊的重复的工作无疑增加了工作量,而且产生不了效率
而理想的情况下是,后台表结构按照最合适的方式存储,而应用程序根据业务逻辑抽取出数据字段映射到我们的业务逻辑类,完全没有必要类和表一一对应,除非某个表恰好构成了我们的一个业务逻辑,这样我们定义这么一个和表结构相同的类,但这也仅仅是巧合,以后需求变更了,表结构和类都可以各自独立的变化,没有相互约束
ORM就是对象和数据的映射,这种映射可以是静态的,也可以是动态的,可以是预先定义好的,也可以根据需求自动生成的,就目前我看来,Hibernate大抵属于前者,这也许就是某些人不喜欢它的原因吧
Hibernate完全就是狭隘化了的ORM,却被一些人奉若圭臬~
分享到:
相关推荐
### Hibernate框架ORM的实现原理详解 #### 一、ORM概念及意义 **ORM**,即**对象关系映射**(Object Relational Mapping),是一种程序技术,用于将关系型数据库中的数据映射到对象上,以便于程序员能够以面向对象的...
Hibernate ORM(Object-Relational Mapping)是Java领域中最受欢迎的持久化框架之一,它提供了一种便捷的方式将Java对象映射到关系数据库,从而实现了对象-关系的解耦。"hibernate-orm-master.zip"文件包含了...
hibernate-orm-master
《深入剖析Hibernate ORM 3.3源码》 Hibernate,作为一个强大的对象关系映射(ORM)框架,一直以来都是Java开发者的重要工具。其3.3版本是 Hibernate 的一个重要里程碑,为开发者提供了丰富的功能和优化的性能。...
《基于ORM模型的物资管理系统的设计和实现》 在信息技术飞速发展的今天,企业对物资管理的需求日益增强,而ORM(Object-Relational Mapping)模型在系统设计中的应用为这一需求提供了有效的解决方案。本文将深入...
三、持久化模型 Hibernate通过Entity类(持久化类)和映射文件(.hbm.xml或注解)定义了对象与表之间的映射关系。实体类通常包含属性(字段),对应数据库表的列,而方法则用于业务逻辑。 四、一级缓存与二级缓存 ...
Hibernate ORM 是一种强大的Java持久层框架,它实现了对象关系映射(ORM)的概念,使得开发者可以使用面向对象的方式来操作数据库...理解Hibernate的持久化机制和ORM原理,对于掌握Java Web开发中的数据管理至关重要。
Hibernate ORM就是实现这一功能的框架,它提供了一种在Java应用中持久化对象的便捷方式。 二、配置文件 在Hibernate 3.2中,主要通过`hibernate.cfg.xml`文件进行配置。这个文件定义了数据库连接参数(如URL、...
Hibernate源码(hibernate-orm-main.zip)Source Code: Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。 它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
Hibernate Search ORM的核心在于将数据库中的对象模型与Lucene搜索引擎紧密结合,通过索引实体对象,使得我们能够对数据库中的文本数据进行复杂的全文搜索。在4.4.2.Final版本中,这个框架引入了更多的配置选项和...
Hibernate,作为一个强大的对象关系映射(ORM)框架,自推出以来就深受Java开发者喜爱。4.2.4.Final是Hibernate的一个稳定版本,它提供了诸多改进和新特性,旨在优化开发效率,提升应用程序性能。本文将详细探讨该...
《Hibernate ORM》是由李晓军等作者编著的书籍,主要涵盖了使用Hibernate进行对象关系映射(ORM)的最佳实践。Hibernate作为Java领域广泛使用的ORM框架,它极大地简化了数据库操作,将面向对象的编程思想与关系型...
《Hibernate ORM深度解析》 Hibernate ORM,全称Hibernate Object Relational Mapping,是Java领域中一款广泛应用的开源对象关系映射框架。它为开发者提供了一种将面向对象的模型与传统的关系数据库之间的转换工具...
Hibernate orm 实现原理 主要讲解了关于hibernate 的一些知识
在Java开发领域,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它允许开发者将Java对象映射到关系数据库的表中,从而简化了数据库操作。本话题将深入探讨如何利用Hibernate配置E-R(实体-关系)...
在Java领域,Hibernate是一个非常流行且强大的ORM框架,它简化了数据库操作,使开发者可以使用Java对象来处理数据库交互,而无需直接编写SQL语句。 标题提到的"ORM Hibernate .jar包"指的是Hibernate框架的可执行库...
《Hibernate ORM 深度解析与实践指南》 Hibernate ORM 是一个开源的Java对象关系映射框架,它为开发者提供了一种在Java应用程序中管理关系数据库的便捷方式。本资料包"hibernate_orm-master.zip"包含了"hibernate-...
对象关系映射的概念,及相应Hibernate的使用规范,同时通过实例展示到底什么是对象关系映射。