Annotation方法
Tables structure
'CREATE TABLE `address` (
`addressID` int(11) NOT NULL,
`addressName` varchar(45) NOT NULL,
PRIMARY KEY (`addressID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
'CREATE TABLE `person` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
`addressID` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
Person类
package hibernate.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; @Entity public class Person { private int id; private String name; private Address address; @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="addressID") public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }
Address类
package hibernate.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Address { private int addressID; private String addressName; @Id @GeneratedValue public int getAddressID() { return addressID; } public void setAddressID(int addressID) { this.addressID = addressID; } public String getAddressName() { return addressName; } public void setAddressName(String addressName) { this.addressName = addressName; } }
XML配置方法
husband表
'CREATE TABLE `husband` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `wifeID` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`), KEY `FK_7hkddxc8rvd25jlebv327ewj8` (`wifeID`), CONSTRAINT `FK_7hkddxc8rvd25jlebv327ewj8` FOREIGN KEY (`wifeID`) REFERENCES `wife` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8'
wife表
'CREATE TABLE `wife` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8'
Husband类
package hibernate.entities; public class Husband { private int id; private String name; private Wife wife; 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; } public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
Wife类
package hibernate.entities; public class Wife { private int id; private String name; 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; } }
Husband.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="hibernate.entities"> <class name="Husband" table="husband"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name"></property> <many-to-one name="wife" column="wifeID" unique="true"></many-to-one> </class> </hibernate-mapping>
Wife.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="hibernate.entities"> <class name="Wife" table="wife"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"/> </class> </hibernate-mapping>
相关推荐
-- 单向一对一关联Address --> <!-- Address.hbm.xml --> <param name="property">person</param> <!-- 引用Person的主键 --> ``` 3. **源码分析** 在`Person`类中,`Address`对象的...
对于单向一对一关联,通常是在一个实体类中定义另一个实体类的引用,而另一个实体类并不知道这个引用。下面是一个简单的例子: ```java // 用户实体类(User) @Entity public class User { @Id @GeneratedValue...
在数据库中,外键用于在两个表之间建立关联,而在单向一对一关联中,通常只在一个实体类中声明对另一个实体的引用,而另一个实体类并不知晓这个关联。 **详细知识点:** 1. **实体类与表的映射**:在Hibernate中,...
单向关联分为单向一对一关联和单向一对多关联。这里我们先讨论单向一对多关联,它是最常见的关联类型之一,一个实体可以拥有多个其他实体实例。例如,一个部门可以有多个员工,但员工并不知道属于哪个部门,这就是...
// 单向一对一关联 @OneToOne(mappedBy = "person") private IdentityCard identityCard; // getters and setters } @Entity public class IdentityCard { @Id @GeneratedValue(strategy = GenerationType....
在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一个实体并不知情。这里我们讨论的是单向外键关联,即一方实体持有了另一方的外键。 在Hibernate中,一对一关联可以通过`@OneToOne`注解来实现。这个...
本篇文章将深入探讨Hibernate中的一对一外键单向关联。 首先,一对一外键关联指的是一个实体通过外键直接引用另一个实体的主键。在单向关联中,只有其中一个实体知道另一个实体的存在,而另一个实体则无感知。这种...
如果只需要在一方(通常是拥有外键的一方)表示关联,可以使用单向一对一关联。比如只在`Passport`类中定义`Person`对象,而`Person`类不包含`Passport`对象。 在实际应用中,应根据业务需求选择合适的关联方式。...
对于单向多对一关联,通常是在多方(拥有多个实体)的类中添加一个对单方(拥有单一实体)的引用。 例如,我们可以创建两个实体类:`Employee`(员工)和`Department`(部门)。在`Employee`类中,我们将有一个`...
单向一对一关联是指在一个实体类中有一个引用指向另一个实体类,但在被引用的实体类中并没有反向的引用。这种关联在现实世界的应用中并不常见,但在某些特定场景下,如用户个人信息与用户账号信息的关联,可能会用到...
如果不希望在一方有引用,可以去掉`mappedBy`属性,变成单向一对一关联。 6. **外键策略**: Hibernate默认会在被引用的一方(在这里是Profile)创建外键,但如果需要在引用方(User)创建外键,可以通过`inverse`...
单向一对一关联通常只在一个实体类中定义,而双向一对一关联则在两个实体类中都有相应的引用。 在XML配置文件中,我们通常会在`hibernate.cfg.xml`中定义数据源和SessionFactory,而在实体类对应的`.hbm.xml`文件中...
本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个实际的例子来帮助理解。 在一对一主键关联映射中,两个实体共享同一个主键,这意味着它们在数据库中的记录具有相同的标识符。这种映射关系通常用于...
为了实现一对一关联,我们需要在 authorized_keys 文件中只包含对应服务器的公钥,这样就限制了该用户只能连接到拥有该公钥的服务器。 接下来,我们谈谈SSH登陆过程中的分页功能。在处理大量数据输出时,分页器如`...
**一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能只有一个护照,或者一个员工只有一个职位。在Hibernate中,这种关系可以通过外键(Foreign Key)在一方或双方实体中实现。 **...
1. **单向一对一关联的注解方式** 在Java类中,我们可以使用`@OneToOne`注解来表示一对一的关联。这个注解有两个重要的属性:`targetEntity`和`mappedBy`。如果关联是从A到B的单向关联,那么在A类上使用`@OneToOne...
在Java编程语言中,特别是在开发基于JPA(Java Persistence API)和ORM(对象关系映射)框架如Hibernate的应用时,一对多单向关联关系是一种常见的数据模型设计。这种关系表示一个实体可以与多个其他实体相关联,而...
本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...
在单向一对一关联中,只有一个实体知道另一个实体的存在。例如,User类可能有一个PersonalInfo属性,但PersonalInfo类没有User属性。配置方法与双向关联类似,只是在PersonalInfo类中不需要任何关于User的引用或注解...
在一对一关联中,外键通常放在关系的“从”方,即依赖于另一方的实体。唯一外键关联映射时,外键字段在数据库中设置为主键约束,确保每个值都是唯一的,这样就能保证一对一的关系。 ### 2. 创建实体类 假设我们有...