开发者社区 问答 正文

jpa中把子类继承到父类的有哪存储法?

jpa中把子类继承到父类的有哪存储法?

展开
收起
游客gzyuldo4mrg6i 2022-08-15 08:51:23 259 分享 版权
阿里云 AI 助理回答

在Java Persistence API (JPA)中,处理子类继承父类的映射方式主要有以下几种策略,这些策略也常被称为继承映射策略:

  1. 单表继承(Single Table Inheritance, STI): 这是最简单的策略,所有子类和父类的属性都存储在同一张数据库表中。JPA通过一个名为discriminator column的额外列来区分不同子类的实例。这个列通常包含一个字符串或者整数,用来标识每条记录属于哪个子类。

  2. 类表继承(Class Table Inheritance, CTI): 在这种策略下,为每个子类创建单独的表,这些表只包含该子类特有的属性。同时,还会有一个表用于存储所有共享的父类属性。通过外键关联,将子类表与父类表连接起来。

  3. 具体表继承(Concrete Table Inheritance, CTI的一种特例): 类似于类表继承,但不使用共享的父类表。每个子类都有自己的表,包括从父类继承下来的属性和自己特有的属性。这意味着父类的属性会在每个子类的表中重复定义。

  4. ** Joined Subclass(连接子类)**: 这种策略也是CTI的一种形式,它有一个专门的父类表存储父类的属性,每个子类也有自己的表,仅包含子类特有的属性。子类表通过外键与父类表关联,这种方式可以减少数据冗余,但查询时可能需要更多的JOIN操作。

选择哪种策略取决于你的具体需求,比如数据冗余、查询性能、是否易于维护等因素。STI简单但可能导致数据冗余,适合子类间差异不大且不会频繁增加新子类的情况;而CTI或Joined Subclass提供了更好的扩展性和灵活性,但可能牺牲一些查询效率。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
收录在圈子:
+ 订阅
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
还有其他疑问?
咨询AI助理