在Hibernate教程的PPT版中,讲解了Person.hbm.xml映射文件的使用,它是Hibernate框架中实现对象关系映射(Object-Relational Mapping, ORM)的关键组成部分。该文件定义了一个名为Person的Java类与其在数据库中的对应表"person"之间的映射关系。
1. **Person.hbm.xml映射结构**:
- 文件以XML格式定义,遵循Hibernate Mapping DTD 3.0规范。
- `<hibernate-mapping>`标签标志着配置的开始,`<class>`标签用于声明一个Java实体类,这里是`com.cn.vo.Person`,映射到数据库表"person"。
- `<id>`元素表示主键,这里使用的是"native"生成策略,表示数据库会自动生成主键。
- `<property>`元素定义了一个名为"name"的属性,对应数据库中的"name"列,类型为字符串。
- `<many-to-one>`标签定义了一个单向关联,"room"属性引用的是另一个Java实体类Room,通过"room_id"列与Room表关联。设置`cascade="all"`表示级联操作,当保存Person时,会同时保存相关的Room对象,`unique="true"`则表明room_id字段是唯一的外键。
2. **唯一外键方式**:
在这里,通过`unique="true"`设置了room_id字段为外键约束,确保每个Person对象的room_id值在整个Person表中是唯一的,这有助于维护数据完整性。
3. **对象关系映射(ORM)介绍**:
ORM解决了面向对象语言(如Java)和关系数据库之间的映射问题,它提供了一种桥梁,使得开发者可以在Java中操作对象,而无需直接处理SQL语句。Hibernate是其中一种流行的ORM框架,它将对象的状态管理和数据库操作分离,提高了开发效率和代码可维护性。
4. **ORM的优点**:
- 提高生产效率:减少了手动编写SQL的工作量。
- 可维护性:代码更简洁,易于维护。
- 性能:由于抽象了底层操作,可以优化执行效率。
- 商业独立性:不同的ORM框架可以应用于不同的数据库系统。
5. **ORM持久层方案比较**:
- JDBC和SQL:虽然基础且成熟,但代码复杂,维护困难。
- EntityBean/CMP(EJB1.1-EJB3):存在设计问题,依赖性强,不支持多态关联查询。
- JDO:简单但不够成熟。
- Apache OJB:性能稳定,来自Apache基金会,但文档少,标准过多成为负担。
- iBATIS:提供更细粒度的数据库操作控制,但可能牺牲部分性能。
总结来说,这个教程详细讲解了如何使用Hibernate的映射文件来定义Java对象和数据库表之间的关系,展示了如何通过Person.hbm.xml实现对象关系映射,以及ORM框架在实际开发中的优势和选择持久层方案时的权衡。