美文网首页
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