Hibernate-one to one

  • db table
CREATE TABLE HUSBAND
(
  HUSBAND_ID       NUMBER(5)    NOT NULL,
  NAME          VARCHAR(20)  
)
CREATE TABLE WIFE
(
  WIFE_ID       NUMBER(5)    NOT NULL,
  HUSBAND_ID       NUMBER(5)    NOT NULL,
  NAME          VARCHAR(20)  
)
  • hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="">
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.password">*****</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@DbServer:port:sid</property>
        <property name="hibernate.connection.username">***</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        
        <mapping resource="config/mapping/oneToOneConfig/Husband.hbm.xml" />
        <mapping resource="config/mapping/oneToOneConfig/Wife.hbm.xml" />
    </session-factory>
</hibernate-configuration>
  • Husband.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>
    <class name="pojo.oneToOneConfig.Husband" table="HUSBAND">
        <id name="husbandId" type="int">
            <column name="HUSBAND_ID" precision="5" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="name" type="string">
            <column name="name" length="20" />
        </property>
    </class>
</hibernate-mapping>
  • Wife.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>
    <class name="pojo.oneToOneConfig.Wife" table="WIFE">
        <id name="wifeId" type="int">
            <column name="WIFE_ID" precision="5" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="name" type="string">
            <column name="name" length="20" />
        </property>
        <many-to-one name="husband" column="HUSBAND_ID" cascade="all" unique="true" />
    </class>
</hibernate-mapping>
  • POJO
package pojo.oneToOneConfig;

public class Husband {

    private int husbandId;
    private String name;
    private Wife wife;
    //getter and setter

}
package pojo.oneToOneConfig;

public class Wife {

    private int wifeId;
    private String name;
    private Husband husband;
    //getter and setter
}
  • HibernateUtil

改成注解的版本:

  • hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="">
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.password">*****</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@DbServer:port:sid</property>
        <property name="hibernate.connection.username">***</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        
        <mapping class="pojo.oneToOneAnnotation.Wife" />
        <mapping class="pojo.oneToOneAnnotation.Husband" />
    </session-factory>
</hibernate-configuration>
  • POJO
package pojo.oneToOneAnnotation;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="HUSBAND")
public class Husband {

    @Id
    @Column(name="HUSBAND_ID")
    private int husbandId;
    @Column(name="NAME")
    private String name;
    @OneToOne(mappedBy="husband") // the husband property in Wife
    private Wife wife;
    //getter and setter
 
}
package pojo.oneToOneAnnotation;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "WIFE")
public class Wife {

    @Id
    @Column(name = "WIFE_ID")
    private int wifeId;
    @Column(name = "NAME")
    private String name;
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "HUSBAND_ID")
    private Husband husband;
    //getter and setter

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容