IdCard.hbm.xml
<!-- 既是主键,又是外键 -->
<class name="IdCard" table="id_card">
<id name="id">
<generator class="foreign" >
<!--通过下面配置的person进行获取id -->
<param name="property">person</param>
</generator>
</id>
<property name="name" />
<!-- 一对一标签配置 ,constrained表示加约束,对生成表语句有影响。-->
<one-to-one name="person" constrained="true"/>
</class>
IdCard.java
private int id;
private String name;
private Person person;
Person.java
private int id;
private String name;
private IdCard idCard;
Person.hbm.xml
<class name="Person">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<!-- 表示Person中的idCard属性 -->
<one-to-one name="idCard"/>
</class>
测试类:
One2One.java
package cn.itcat.hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcast.hibernate.domain.IdCard;
import cn.itcast.hibernate.domain.Person;
public class One2One {
public static void main(String[] args) {
add();
query(1);
}
/**
*@MethodName:add
*@Description:添加
*@author:徐凯强
*@return Department
*@date:2014-7-9下午10:30:17
*/
static Person add() {
Session session = null;
Transaction transaction = null;
try {
Person person= new Person();
person.setName("person name");
IdCard idCard = new IdCard();
idCard.setPerson(person);
idCard.setName("idcard name");
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
session.save(person);
session.save(idCard);
transaction.commit();
return person;
} finally {
if (session != null) {
session.close();
}
}
}
static Person query(int id){
Session session=null;
Person person=null;
try {
session = HibernateUtil.getSession();
person=(Person) session.get(Person.class, id);
System.out.println(person.getName());
//**代理对象的初始化,懒加载有关*//*
//Hibernate.initialize(employee.getDepartment());
//System.out.println(employee.getDepartment().getName());
return person;
} finally {
if (session != null) {
session.close();
}
}
}
}
源代码: