Hibernate表间关联与对象关系映射讲解
151 浏览量
更新于2024-08-04
收藏 224KB PPT 举报
"该资源是关于Hibernate表间关联的PPT课件,涵盖了主键生成策略、一对一关联和一对多关联的实现方法。"
在Java持久化框架Hibernate中,表间关联是数据库关系模型在对象模型中的体现,使得对象间的关联能够透明地映射到数据库的表关联上。以下是对课件内容的详细解释:
1. 主键生成策略:
Hibernate提供了多种主键生成策略,以适应不同的数据库环境和需求:
- `assigned`:由用户在程序中手动设置主键值。
- `increment`:由Hibernate自己维护一个计数器,每次自增来生成主键,适用于非数据库环境。
- `identity`:由数据库自动递增,如MySQL的`AUTO_INCREMENT`。
- `sequence`:基于数据库序列生成主键,如Oracle的序列。
- `hilo`:Hibernate使用Hi-Lo算法生成主键,减少数据库交互,提高性能。
- `native`:根据数据库类型自动选择`identity`、`sequence`或`hilo`。
- `uuid.hex`:使用UUID算法生成16进制的主键。
2. 一对一关联(One-to-One):
这种关联通常用于两个实体之间有严格的对应关系,例如一个学校对应一个校长。在实现一对一关联时:
- 需要在主动方实体(如School)中添加被动方实体(如Header)的引用。
- 在主动方的映射文件中使用`<one-to-one>`标签,指定关联的属性名称和被动方的类。
- 可以设置`cascade`属性来决定操作是否级联到关联的对象。
3. 一对多关联(One-to-Many):
例如,班级与学生之间的关系就是一对多关联。实现方法如下:
- 建立两个POJO类,如Banji(班级)和Student(学生),并为它们创建对应的Hibernate配置文件。
- 在主动方(Banji)中创建一个`Set`类型的属性,用来存储所有关联的被动方(Student)对象。
- 在主动方的映射文件中使用`<set>`标签来定义这个集合,指定集合的名称、表名、排序方式、延迟加载属性以及级联操作。
`<set>`标签内的`<key>`标签用于指定子表(stuinfo)中的外键列名,`<one-to-many>`标签则指定被动方的类。
4. Set属性配置:
- `name`:集合属性的名称,用于在Java代码中访问。
- `table`:关联表的名称。
- `order-by`:指定集合元素的排序方式,如按SID升序排列。
- `lazy`:是否启用懒加载,`false`表示立即加载所有关联对象,`true`表示延迟加载。
- `cascade`:级联操作,如`all`表示所有操作都级联到关联对象。
以上内容详细介绍了Hibernate中的表间关联,包括主键生成策略以及一对一和一对多关联的配置和使用,这对于理解和使用Hibernate进行数据持久化操作非常关键。
2010-09-21 上传
2009-07-10 上传
2022-10-24 上传
2021-10-07 上传
2008-01-11 上传
2010-12-12 上传
2021-10-04 上传
2021-10-04 上传
2021-10-03 上传
matlab大师
- 粉丝: 2735
- 资源: 8万+
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查