美文网首页
hibernate详解(八)基于主键映射的一对一关联关系

hibernate详解(八)基于主键映射的一对一关联关系

作者: 秀逼 | 来源:发表于2017-11-05 11:36 被阅读0次

    sql语句:

     /* 基于主键的映射 */
     CREATE TABLE t_person_pk
     (
        id NUMBER(10) PRIMARY KEY,
        name VARCHAR2(20) NOT NULL,
        gender VARCHAR2(10),
        age NUMBER(3) CHECK(age BETWEEN 1 AND 100)
     );
    
    CREATE TABLE t_passport_pk
     (
        id NUMBER(10) PRIMARY KEY REFERENCES t_person_pk(id),
        bh VARCHAR2(20) NOT NULL UNIQUE
     );
     
     CREATE SEQUENCE t_person_pk_seq
     START WITH 1
     INCREMENT BY 1;
    

    Person_PK.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!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.iotek.basic.association.one2one.pojo">
        <class name="Person" table="T_PERSON_PK">
            <id name="id" column="ID" type="long">
                <generator class="sequence">
                    <param name="sequence">t_person_fk_seq</param>
                </generator>
            </id>
            
            <property name="name" type="string" column="NAME"/>
            <property name="age" type="integer" column="AGE"/>
            <property name="gender" type="string" column="GENDER"/>
            <one-to-one name="passport" class="Passport" cascade="all"/>
        </class>
    </hibernate-mapping>
    

    Passport_PK.hbm.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!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.iotek.basic.association.one2one.pojo">
        <class name="Passport" table="T_PASSPORT_PK">
            <id name="id" column="ID" type="long">
                <generator class="foreign">
                    <param name="property">person</param>
                </generator>
            </id>
            
            <property name="bh" type="string" column="BH"/>
            <one-to-one name="person" class="Person"></one-to-one>
        </class>
    </hibernate-mapping>
    

    hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
            <!-- property 元素用于配置Hibernate中的属性 键:值 -->
            
              <!-- hibernate.connection.driver_class : 连接数据库的驱动  -->
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            
              <!-- hibernate.connection.url : 连接数据库的地址,路径 -->
            <property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
            
              <!-- hibernate.connection.username : 连接数据库的用户名 -->
            <property name="connection.username">system</property>
            
              <!-- hibernate.connection.password : 连接数据库的密码 -->
            <property name="connection.password">root</property>
            
              <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 -->
            <property name="show_sql">true</property>
            
              <!-- 数据库方言配置 org.hibernate.dialect.Oracle10gDialect (选择最短的)-->
            <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
            
              <!-- 加载配置文件的pojo类,否则找不到,报错, unknow entity -->
            <mapping resource="com/iotek/basic/pojo/Student.hbm.xml"/>
            <mapping resource="com/iotek/basic/association/one2one/pojo/Passport_PK.hbm.xml"/>
            <mapping resource="com/iotek/basic/association/one2one/pojo/Person_PK.hbm.xml"/>
            
        </session-factory>
    </hibernate-configuration>
    

    注意基于主键的关系映射和基于外键的关系映射之间,映射文件写法上的差异。

    无标题.png

    相关文章

      网友评论

          本文标题:hibernate详解(八)基于主键映射的一对一关联关系

          本文链接:https://www.haomeiwen.com/subject/ueycmxtx.html