1.2.2 The problem of subtypes
Java world: parent class and child class. 父类和子类.
Sql world: 要是有supertables和subtables就好了,那样我们就可以在新建一个表时从一个父表中继承来一些列,可是RDBMS里并没有提供这种机制.
对于如何来沟通这两个世界里的就subtypes这方面的联系,本书将在第五章第一节的"Mapping class inheritance"里展开讨论.在那一节我们将深入讨论如何将一个class hierarchy persist进到数据库或表中.
但关于subtypes的问题还没完,我们将得处理继承中带来的多态问题.
在我们的e-commerce例子中,User有一个指向BillingDetails的关联关系,而这个BillingDetails是一个父类,这个关联关系也就是一种多态性质的关联.在运行时,User对象真正指向的可以是任意的子类.
跟这个相关的一个问题是, 我们也需要针对BillingDetails这个父类做出那种多态性质的查询,从而查出其所有的子类.
而对于这样的多态查询,SQL世界里也没有可用的措施支持.
第五章里将要讨论的三种关于继承的映射方案可以帮我们来描述这种多态的关联关系与相关的多态查询.
1.2.3 The problem of identity
在Java与SQL两个World里,一共有三种方式来处理与identity相关的问题.
Java world:
1,Object identity(可以粗略地理解成内存位置的比较,用a==b这样的等式来check)
2,用Java里equals方法来判断.
SQL world:
primary key.
不过,第九章里我们会看到,Java里的那两种方式都不能与primary key有等效的功能.
实际应用中,我们会经常见到很多nonidentical的对象来同时代表数据库里同一行信息,多线程的应用就是一个很明显的例子.再进一步说,为一个persistent class覆盖Object的equals()方法时,也有一些难以处理的注意点.
UserName or UserID? --> surrogate keys -->USER_ID and BILLING_DETAILS_ID columns contain system-generated values.这两行的引入纯粹是为了DataModel层的方便,而与Java端没任何关系.那在Java的DomainModel层,我们又怎么来描述这样的列呢?我们将在 “Mapping entities with identity”一节中讨论这个问题.
再深一步,在整个Persistence环境中,identity与系统中的缓存和事务管理紧密关联在一起的.我们将在第10章与第13章来讨论这个问题.
how the relationships between our classes are mapped and handled. Is the foreign key in the database all you need?
-->1.2.4 Problems relating to associations
分享到:
相关推荐
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
总之,《深入浅出Hibernate》读书笔记涵盖了实体对象生命周期的转换、实体对象的识别机制以及Hibernate的多级缓存策略,这些都是理解并有效使用Hibernate的关键点。通过深入学习这些概念,开发者能够更好地掌握...
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
hibernate读书笔记,里面有一些实例和解说,是自己整理的,非常适合开发时做参考
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
java虚拟机读书笔记,主要描述阅读Java虚拟机核心技术的描述。
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
通过阅读《Java游戏编程读书笔记》这本书,你可以深入了解这些概念并学习如何将它们应用到实际项目中。文档中的内容可能涵盖了Java游戏开发的基本原理、代码示例、最佳实践以及常见问题的解决方案。通过深入学习和...
读书笔记:《数据结构与算法分析 java语言描述》 读书笔记
读书笔记:「数据结构与算法分析Java语言描述」读书笔记。
### 马士兵Java框架Hibernate学习笔记 #### 一、HelloWorld - **知识点概述**: - **项目搭建**:介绍了如何从零开始搭建一个简单的Hibernate项目。 - **环境配置**:包括了如何配置MySQL数据库、创建必要的表...
计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇