基于外键的一对一关系

来源:互联网 发布:三维模型设计软件 mac 编辑:程序博客网 时间:2024/06/05 21:10


Person.java

package cn.itcast.domain;public class Person {private int id;private String name;private 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;}}

Person.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.itcast.domain"><class name="Person"><id name="id"><generator class="native"></generator></id><property name="name"></property><!-- 在数据库中,我们习惯用person_id来查询,但是现在我们使用person这个类的实例来查询。hibernate的思维要慢慢的习惯 --><one-to-one name="idCard" property-ref="person"></one-to-one></class></hibernate-mapping>

IdCard.java

package cn.itcast.domain;import java.util.Date;public class IdCard {private int id;private Date usefulLife;public Date getUsefulLife() {return usefulLife;}public void setUsefulLife(Date usefulLife) {this.usefulLife = usefulLife;}private Person person;public int getId() {return id;}public void setId(int id) {this.id = id;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}

IdCard.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.itcast.domain"><!-- class指明类的名称,在person先看下面,让后在看上面的personforeign表明我的id不是自己生产的,而是从外面拿过来的,这样保证与person.id一致  --><class name="IdCard" table="id_card"><id name="id"><generator class="native"></generator></id><property name="usefulLife" column="useful_life"></property><many-to-one name="person" column="person_id" unique="true"></many-to-one></class></hibernate-mapping>


one2one.java

package cn.itcast.dao.test;import java.util.Date;import org.hibernate.Session;import org.hibernate.Transaction;import org.logicalcobwebs.asm.tree.TryCatchBlockNode;import cn.itcast.dao.HibernateUtil;import cn.itcast.domain.IdCard;import cn.itcast.domain.Person;public class one2one {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub//add();query(3);}static Person add(){Session s=null;Transaction tx=null;try {s=HibernateUtil.getSession();IdCard idCard=new IdCard();idCard.setUsefulLife(new Date());Person person=new Person();person.setName("person1");person.setIdCard(idCard);idCard.setPerson(person);tx=s.beginTransaction();s.save(person);s.save(idCard);tx.commit();return person;} finally  {if(s!=null)s.close();}}static Person query(int id){Session s=null;Transaction tx=null;try {s=HibernateUtil.getSession();tx=s.beginTransaction();Person p=(Person)s.get(Person.class,id);System.out.println(p.getIdCard().getUsefulLife());tx.commit();return p;} finally  {if(s!=null)s.close();}}}


原创粉丝点击