Hibernate ORMapping Annotation XML PDF
根据给定文件的信息,本文将详细介绍Hibernate ORM(Object Relational Mapping)中关于不同类型的关联映射方式,并结合Annotation和XML两种配置方式来进行说明。 ### 一、一对一单向外键关联 在一对一单向外键关联中,一个实体可以关联到另一个实体,但这种关联是单向的,即只有从一方到另一方的导航。例如,`Husband`实体可以有一个指向`Wife`实体的外键,但`Wife`实体没有指向`Husband`实体的导航属性。 **Annotation方式:** ```java @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } // 一对一,单项外键关联 @OneToOne @JoinColumn(name = "wifeId") public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } } @Entity public class Wife { private int id; private String name; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` **生成的SQL语句:** ```sql CREATE TABLE Husband ( id integer NOT NULL AUTO_INCREMENT, name varchar(255), wifeId integer, PRIMARY KEY (id) ); CREATE TABLE Wife ( id integer NOT NULL AUTO_INCREMENT, name varchar(255), PRIMARY KEY (id) ); ALTER TABLE Husband ADD INDEX FKAEEA401BC7C34A8A (wifeId), ADD CONSTRAINT FKAEEA401BC7C34A8A FOREIGN KEY (wifeId) REFERENCES Wife (id); ``` ### 二、一对一双向外键关联 一对一双向外键关联与单向外键关联类似,不同之处在于两个实体之间存在双向的导航属性。 **Annotation方式:** ```java @Entity public class Husband { // ... // 一对一,双向外键关联 @OneToOne(mappedBy = "husband") public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } } @Entity public class Wife { private Husband husband; @OneToOne @JoinColumn(name = "husbandId") public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; } } ``` ### 三、一对一单向主键关联 在这种关联中,一个实体的主键作为另一个实体的外键,通常是通过`@OneToOne`和`@PrimaryKeyJoinColumn`来实现。 **Annotation方式:** ```java @Entity public class StuIdCard { private int id; private String num; private Student student; @OneToOne @PrimaryKeyJoinColumn(name = "studentId") public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } } ``` **XML方式:** ```xml <hibernate-mapping> <class name="com.zj.hibernate.StuIdCard"> <id name="id"> <generator class="native"/> </id> <property name="num"/> <one-to-one name="student" class="com.zj.hibernate.Student" constrained="true"/> </class> </hibernate-mapping> ``` 以上内容仅覆盖了一对一的几种常见关联方式及其配置方法,接下来还可以进一步探讨其他类型的关系映射,包括一对多、多对多等,以及这些关系在Hibernate中的具体实现方式。
剩余24页未读,继续阅读
- liuchunhua02232013-05-28前段时间需要看了一下,简单易懂。
- konanduan2012-10-24比较简单的实例,易懂~
- 粉丝: 14
- 资源: 26
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助