在本章节中,我们将深入探讨Java-Hibernate中的继承映射策略,主要关注的是如何将面向对象编程中的继承关系映射到关系数据库。三种主要的继承映射策略包括: 1. **每个继承层次一张表**: - 这种策略在数据库中为整个继承层次创建一张表格,存储所有类的属性,通过增加一个鉴别字段区分不同类。 - 缺点是可能存在冗余字段,且需要额外的字段来表示类别,不允许为子类属性设置`notnull`约束。 2. **每个具体类一张表**: - 每个子类都对应一张独立的表,包含子类及其继承自父类的所有属性。 - 父类作为抽象类,不直接映射为表,这样可以避免冗余,但维护时可能需要为每个子类单独创建映射文件。 3. **每个类一张表**: - 这是另一种常见策略,每个类都独立映射为一张表,这保证了数据的清晰度,但查询复杂度可能提高,因为需要关联操作。 以下是具体步骤和实践: - **步骤1:** 创建持久化类,如`Person.java`、`Worker.java`和`Student.java`,这些类分别代表了继承层次的不同角色。 - **步骤2:** 为每个类编写映射文件,如`Person.hbm.xml`,在这些文件中定义类的属性和关系,包括`<discriminator>`用于鉴别字段。 - **步骤3:** 在`hibernate.cfg.xml`配置文件中调整设置,以便与持久化类和映射文件正确配合。 - **步骤4:** 创建DAO接口和实现类,用于数据库交互。 - **步骤5:** 编写测试类来验证映射和操作的正确性。 在选择策略时,开发者需要权衡简化数据库设计与性能之间的平衡。每个继承层次一张表策略虽然简单,但可能导致数据冗余;每个具体类一张表策略避免了冗余,但维护成本增加;每个类一张表则提供了更清晰的数据结构,但查询效率可能下降。开发者应根据具体需求选择最适合的策略。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/44256952814d4817bad1b949c8c127f4_weixin_42202595.jpg!1)
- 粉丝: 23
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)