Hibernate关系映射 --- 一对一实例分析

2014-11-24 13:55:55 · 作者: · 浏览: 3

一 概念介绍


一对一的方式有两种,分为:


(1)基于主键的方式 --- 共用主键(Person --- IdCard)典型的一对一


没有增加额外的列


(2)基于外键的方式 --- 增加额外的一列


下面介绍一下第一中基于主键的实现


二 代码分析


(1)Person类


package com.hbsi.domain;


public class Person {


private int id;


private String name;


private IdCard idCard;//一个人对应一个IdCard


public Person() {


super();


// TODO Auto-generated constructor stub


}


public Person(int id, String name, IdCard idCard) {


super();


this.id = id;


this.name = name;


this.idCard = idCard;


}


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 IdCard getIdCard() {


return idCard;


}


public void setIdCard(IdCard idCard) {


this.idCard = idCard;


}


public String toString() {


return "Person [id=" + id + ", name=" + name + ", idCard=" + idCard


+ "]";


}


}


(2)IdCard类


package com.hbsi.domain;


import java.util.Date;


public class IdCard {


private int id;


private Date usefulLife;


private Person person; //一个IdCard只属于一个人


public IdCard() {


super();


// TODO Auto-generated constructor stub


}


public IdCard(int id, Date usefulLife, Person person) {


super();


this.id = id;


this.usefulLife = usefulLife;


this.person = person;


}


public int getId() {


return id;


}


public void setId(int id) {


this.id = id;


}


public Date getUsefulLife() {


return usefulLife;


}


public void setUsefulLife(Date usefulLife) {


this.usefulLife = usefulLife;


}



public Person getPerson() {


return person;


}


public void setPerson(Person person) {


this.person = person;


}


}


(3)在配置文件中配置Person类和IdCard类



"-//Hibernate/Hibernate Configuration DTD 3.0//EN"


"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">





"hibernate.connection.driver_class">com.mysql.jdbc.Driver


"hibernate.connection.url">jdbc:mysql:///demo


"hibernate.connection.username">root


"hibernate.connection.password">1234



"hibernate.dialect">org.hibernate.dialect.MySQLDialect



"hibernate.hbm2ddl.auto">update




"hibernate.show_sql">true



"com/hbsi/domain/Person.hbm.xml" />


"com/hbsi/domain/IdCard.hbm.xml" />