- 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
}
网友评论