Hibernate对象关系映射:每类一张表策略详解
需积分: 10 90 浏览量
更新于2024-08-15
收藏 4.94MB PPT 举报
在Hibernate教程中,讨论了“每个具体类一张表”策略的优缺点。这种策略将每个具体的子类映射到数据库中的一张单独的表,以便为子类的成员属性提供更精确的控制,如设置not null约束。优点包括:
1. **灵活性**:针对子类特性定制字段,有助于维护特定业务逻辑。
2. **数据完整性**:通过直接映射约束,确保子类数据的完整性。
然而,这种策略也存在明显的缺点:
- **不符合关系模型规范**:由于子类可能有许多重复的字段,这违背了关系数据库设计中的一致性和简洁原则,可能导致数据冗余和复杂性增加。
- **维护成本高**:随着子类的增多,表的数量也会相应增加,管理和维护这些表会变得复杂,尤其是当关系发生变化时。
- **性能影响**:虽然ORM框架提供了便利,但如果处理不当,频繁的表操作可能会降低性能,尤其是在进行大规模数据操作时。
为了克服模型不匹配(阻抗不匹配)的问题,Hibernate等ORM框架被提出,它们作为Java与关系数据库之间的桥梁,提供了一种自动和透明的数据持久化机制。ORM的主要优点包括:
- **提高生产力**:通过映射元数据,减少了手动编写SQL的繁琐工作,开发者可以专注于业务逻辑。
- **可维护性**:ORM框架使得代码结构清晰,便于团队协作和维护。
- **性能优化**:通过缓存机制和查询优化,提升了数据访问的效率。
- **厂商独立性**:ORM框架允许开发者在不同的数据库系统之间迁移应用,降低了对特定数据库的依赖。
当前流行的ORM持久层方案有多种选择,各有优劣:
- **SQL/JDBC**:基础成熟,但编码复杂,可读性差,不易维护且移植性受限。
- **EntityBean/CMP (EJB)**:尽管EJB3有所改进,但早期版本存在设计缺陷,移植性和可扩展性不足。
- **JDO**:简单易用但不够成熟,适合初学者。
- **Apache OJB**:性能稳定,但文档资源较少,过多的标准支持反而成为负担。
- **iBATIS**:提供了更精细的数据库操作控制,但可能牺牲部分ORM带来的便利。
每个具体类一张表策略虽然方便控制,但在设计上需权衡其带来的冗余和维护挑战,合理选择ORM框架是关键,以适应项目的需求和性能要求。
2019-03-05 上传
2019-03-05 上传
2019-03-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-07-26 上传
活着回来
- 粉丝: 27
- 资源: 2万+
最新资源
- UdacityCICDDemo:CICD演示项目
- Basic-Backend-Contact-Form-NodeJS
- rentrez:使用R与NCBI entrez交谈
- jsxhint-loader:jshint-jsx Webpack加载器
- webpack_self
- wind.zip_matlab例程_matlab_
- D1ce:这是一个棘手的骰子IOS应用程序
- DataHarmonizer
- clockette:世界时钟Web应用程序
- ropenaq:OpenAQ API的R包
- time-formatter-js:js时间类型格式化工具库(兼容的IE):自定义时间格式,时间排序,间隔天数,前n天的日期。
- example-flac3d-mohr.zip_Windows编程_Visual_C++_
- teach-shiny:Shiny Train the Trainer研讨会的材料
- FedData:自动下载可从多个联合数据源获得的地理空间数据的功能
- Matlab 仿真 CSMA/CA
- router:简单JavaScript路由器