设为首页 加入收藏

TOP

Hibernate关联映射 ---一对一案例分析(基于外键)
2014-11-24 13:55:56 来源: 作者: 【 】 浏览:1
Tags:Hibernate 关联 映射 ---一对一案例分析 基于

一 概念分析


1.以Person – IdCard为例,Person为主,IdCard为从


一个人只有一个身份证,一个身份证只属于一个人


基于外键的是在从的那一方设置外键并增加一列


二 代码分析


1.Person实例类


package com.hbsi.domain;


public class Person {


private int id;


private String name;


private IdCard idCard; //一个人对应一个身份证


public Person() {


super();


// TODO Auto-generated constructor stub


}


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;


}


}


2.Student实例类


package com.hbsi.domain;


import java.util.Date;


//基于外键的one to one


public class IdCard {


private int id;


private Date usefulLife;


private Person person;//一个身份证只属于一个人



public IdCard() {


super();


// TODO Auto-generated constructor stub


}


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的映射文件 Person.hbm.xml


< xml version="1.0" >



"-//Hibernate/Hibernate Mapping DTD 3.0//EN"


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


"com.hbsi.domain">


"Person" table="person">


"id" column="id">


"native" />



"name" column="name" />



"idCard" property-ref="person">




4.IdCard类的映射文件


< xml version="1.0" >



"-//Hibernate/Hibernate Mapping DTD 3.0//EN"


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


"com.hbsi.domain">


"IdCard" table="id_card">


"id" column="id">


"native" />



"usefulLife" column="useful_life" />



"person" column="person_id" unique="true">




5.测试


public class One2One {


public static void main(String[] args) {


add();


query(1);


}


//保存


static Person add() {


Session session = null;


Transaction transaction = null;


try {


session = HibernateUtil.getSession();


transaction = session.beginTransaction();



IdCard idCard = new IdCard();


idCard.setUsefulLife(new Date());



Person person = new Person();


person.setName("老王");



idCard.setPerson(person);


// person.setIdCard(idCard);



session.save(person);


session.save(idCard);



transaction.commit();


return person;


} finally {


if (session != null) {


session.close();


}


}


}


//查询


static Person query(int person_id) {


Session session = null;


try {


session = HibernateUtil.getSession();



Person person = (Person) session.get(Person.class, person_id);


System.out.println(person.getIdCard().getUsefulLife());



return person;


} finally {


if (session != null) {


session.close();


}


}


}


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Hibernate入门 下一篇Hibernate关联映射 --- 多对多实..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)