hibernate一對一詳解

來源:互聯網
上載者:User

標籤:stat   on()   number   oid   pre   使用   存在   card   class   

IdCard.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hibernate.c_onetoone">        <class name="IdCard" table="t_card">        <id name="id"  >         <generator class="native"/>     </id>            <property name="number"/>        <many-to-one name="person" class="Person" column="pserson_id" unique="true"></many-to-one>    </class>    </hibernate-mapping>

1、一對一關聯性中存在兩張表,id card表有外鍵,所以使用many-to-one 來對應

2、指定class,外鍵名稱column="pserson_id",唯一性unique="true"

 

------------------------------------

Person.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hibernate.c_onetoone">        <class name="Person" table="t_person">        <id name="id"  >         <generator class="native"/>     </id>            <property name="name"/>        <one-to-one name="idCard" ></one-to-one>    </class>    </hibernate-mapping>

 1、一對一關聯性使用one-to-one 因為這張表無外鍵

---------------------------------------

Person.java

public class Person {    int id;    String name;    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;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + "]";    }    }

IdCard.java

public class IdCard {    int id;    String number;    Person person;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getNumber() {        return number;    }    public void setNumber(String number) {        this.number = number;    }    public Person getPerson() {        return person;    }    public void setPerson(Person person) {        this.person = person;    }    @Override    public String toString() {        return "IdCard [id=" + id + ", number=" + number + "]";    }}

app.java:

public class APP {    static SessionFactory sessionFactory=null;    static{        sessionFactory =new Configuration().configure().addClass(Person.class).addClass(IdCard.class).buildSessionFactory();    }    @Test    public void setApp() {        Session sess= sessionFactory.openSession();        Transaction ts=null;        //        ts=sess.beginTransaction();        Person person1=new Person();        person1.setName("p1");        IdCard idCard1=new IdCard();        idCard1.setNumber("000001");        Person person2=new Person();        person2.setName("p2");        IdCard idCard2=new IdCard();        idCard2.setNumber("000002");        Person person3=new Person();        person3.setName("p3");        IdCard idCard3=new IdCard();        idCard3.setNumber("000002");        //        person1.setIdCard(idCard1);        person2.setIdCard(idCard2);        person3.setIdCard(idCard3);        idCard1.setPerson(person1);        idCard2.setPerson(person2);        idCard3.setPerson(person3);        //        sess.save(person1);        sess.save(idCard1);        sess.save(person2);        sess.save(idCard2);        sess.save(person3);        sess.save(idCard3);        ts.commit();        sess.close();    }

 ------------------------------------

1、一對一關聯性中會產生兩張表,一張有外鍵,一張無外鍵

2、有外鍵的一方用many-to-one ,然後用唯一性進行約束即可

3、無外鍵一方使用one-to-one 

 

hibernate一對一詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.