美文网首页
Hibernate-one to many

Hibernate-one to many

作者: 一颗北上广的心 | 来源:发表于2017-10-25 15:13 被阅读0次
    • db table
    CREATE TABLE ANSWER
    (
      ANSWER_ID       NUMBER(5)    NOT NULL,
      QUESTION_ID       NUMBER(5)    ,
      ANSWER            VARCHAR(20),
      CREATED_BY        VARCHAR2(20),
      CREATED_DATE      DATE  
    )
    CREATE TABLE QUESTION
    (
      QUESTION_ID       NUMBER(5)    NOT NULL,
      QUESTION          VARCHAR2(20) ,
      CREATED_BY        VARCHAR2(20) ,
      CREATED_DATE      DATE  
    )
    
    • 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/oneToManyConfig/Answer.hbm.xml" />
            <mapping resource="config/mapping/oneToManyConfig/Question.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
    
    • Answer.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">
    <!-- Generated 2013-10-22 15:28:34 by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
        <class name="pojo.oneToManyConfig.Answer" table="ANSWER">
            <id name="answerId" type="int">
                <column name="ANSWER_ID" precision="5" scale="0" />
                <generator class="assigned" />
            </id>
            <property name="answer" type="string">
                <column name="ANSWER" length="20" />
            </property>
            <property name="createdBy" type="string">
                <column name="CREATED_BY" length="20" />
            </property>
            <property name="createdDate" type="date">
                <column name="CREATED_DATE" length="7" />
            </property>
        </class>
    </hibernate-mapping>
    
    • Question.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.oneToManyConfig.Question" table="QUESTION">
            <id name="questionId" type="int">
                <column name="QUESTION_ID" precision="5" scale="0" />
                <generator class="assigned" />
            </id>
            <set name="answers" table="ANSWER" cascade="all">
                <key column="QUESTION_ID"></key> // the foreign key in table ANSWER
                <one-to-many class="pojo.oneToManyConfig.Answer" />
            </set>
            <property name="createdBy" type="string">
                <column name="CREATED_BY" length="20" />
            </property>
            <property name="createdDate" type="date">
                <column name="CREATED_DATE" length="7" />
            </property>
        </class>
    </hibernate-mapping>
    
    • POJO
    package pojo.oneToManyConfig;
    
    import java.util.Date;
    
    public class Answer {
    
        private int answerId;
        private String answer;
        private String createdBy;
        private Date createdDate;
    
        //getter and setter
    
    }
    
    package pojo.oneToManyConfig;
    
    import java.util.Date;
    import java.util.Set;
    
    public class Question {
    
        private int questionId;
        private Set<Answer> answers;
        private String createdBy;
        private Date createdDate;
        //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.oneToManyAnnotation.Answer" />
            <mapping class="pojo.oneToManyAnnotation.Question" />
        </session-factory>
    </hibernate-configuration>
    
    • POJO
    package pojo.oneToManyAnnotation;
    
    import java.util.Date;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="ANSWER")
    public class Answer {
    
        @Id
        @Column(name="ANSWER_ID")
        private int answerId;
        @Column(name="ANSWER")
        private String answer;
        @Column(name="CREATED_BY")
        private String createdBy;
        @Column(name="CREATED_DATE")
        private Date createdDate;
        //getter and setter
     
    }
    
    package pojo.oneToManyAnnotation;
    
    import java.util.Date;
    import java.util.Set;
    
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "QUESTION")
    public class Question {
    
        @Id
        @Column(name = "QUESTION_ID")
        private int questionId;
    
        @OneToMany(mappedBy = "", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name="QUESTION_ID")
        private Set<Answer> answers;
    
        @Column(name = "CREATED_BY")
        private String createdBy;
        @Column(name = "CREATED_DATE")
        private Date createdDate;
    
        //getter and setter
    
    }
    
    

    相关文章

      网友评论

          本文标题:Hibernate-one to many

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