首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate一对一外键双向联系关系实例

2013-03-28 
Hibernate一对一外键双向关联实例类图如下:?Person.java类package com.org.modelpublic class Person {pr

Hibernate一对一外键双向关联实例

类图如下:


Hibernate一对一外键双向联系关系实例
?Person.java类

package com.org.model;public class Person {private int id;private String name;private Card card;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 Card getCard() {return card;}public void setCard(Card card) {this.card = card;}}

?Card.java类

package com.org.model;public class Card {private int id;private String cardNum;private Person person;public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCardNum() {return cardNum;}public void setCardNum(String cardNum) {this.cardNum = cardNum;}}

?Person.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="com.org.model"><class name="Person" table="person"><id name="id"><generator column="name" not-null="true"/><!--   name指Student类中对应一方的属性名          cascade属性指定级联操作      unique指定外键的唯一性    class指一方的类名                column表示关联的外键      not-null表示此外键不能为空    --> <many-to-one name="card"  cascade="save-update" unique="true"               column="card_id" not-null="true"></many-to-one></class></hibernate-mapping>

?Card.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="com.org.model"><class name="Card" table="card"><id name="id"><generator column="card_num" not-null="true"/><!-- property-ref用于指定关联类的一个属性,这个属性将会和外键相对应,如果没有指定,会使用对方关联类的主键。 --><one-to-one name="person" cascade="save-update" property-ref="card"></one-to-one></class></hibernate-mapping>

?测试类:

package com.org.model.test;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import com.org.model.Card;import com.org.model.Person;import com.org.util.HibernateUtil;public class HibernateTest1 {@Testpublic void testSave1() {Session session = null;Transaction tx = null;try {// 拿到sessionsession = HibernateUtil.getSession();// 开启事务tx = session.beginTransaction();// 给实体赋值Person person = new Person();person.setName("aaa");Card card = new Card();card.setCardNum("11111111111111");person.setCard(card);card.setPerson(person);session.save(card);//提交事务tx.commit();} catch (Exception e) {// 打印堆栈信息e.printStackTrace();// 事务回滚if (tx != null) {tx.rollback();}} finally {HibernateUtil.closeSession(session);}}}

?结果:

Hibernate: insert into card (card_num) values (?)Hibernate: insert into person (name, card_id) values (?, ?)

?

热点排行