hibernate----聯合主鍵映射

以課程表和學生表為例,課程表有課程編碼和課程名稱,學生表有學號和姓名,當學號和課程編碼都確定時,就可以確定該學生這門課程的分數。
1.創建學生類和課程表類,以及把學生的學號,課程的編號組成一個實體類,共三個實體類

(1)學生類 student.class
package entity;

public class Student {
private int num;
private String name;

public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
(2)課程表類(感覺這個類沒有用到,其實可以不寫) Test.class

package entity;

public class Test {

private int Tnum;
private String classname;
public int getTnum() {
    return Tnum;
}
public void setTnum(int tnum) {
    Tnum = tnum;
}
public String getClassname() {
    return classname;
}
public void setClassname(String classname) {
    this.classname = classname;
}

}
(3) 主鍵類 Pass.class
package entity;

import java.io.Serializable;

public class Mainkey implements Serializable{

private static final long serialVersionUID = 1L;
private int num;
private int Tnum;
public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}
public int getTnum() {
    return Tnum;
}
public void setTnum(int tnum) {
    Tnum = tnum;
}

}
}
2.配置實體類的映射文件
(1)pass.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="entity">

<class name="Pass" table="Pass">
   <composite-id name="mainkey">
   <key-property  name="num" type="integer" ></key-property>
    <key-property  name="Tnum" type="integer"></key-property>
   </composite-id>
    <property name="grade" type="integer"/>
   
</class>

</hibernate-mapping>

3.配置hibernate.cfg.xml
其他的配置相同,主要是把pass類的配置文件加進去
這一句 “ <mapping resource="entity/Pass.hbm.xml"/>”

4.寫測試類
package text;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import entity.Mainkey;

import entity.Pass;

public class Text02 {

public static void main(String[] args) {
    Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
    SessionFactory sessionFactory=cfg.buildSessionFactory();
    Session session=sessionFactory.openSession();
    Transaction ts=session.beginTransaction();
    
    Mainkey mainkey=new Mainkey();
    mainkey.setNum(4017);
    mainkey.setTnum(10001);
    
    Pass pass=new Pass();
    pass.setGrade(90);
    pass.setMainkey(mainkey);
    session.save(pass);
    ts.commit();
    session.close();
    
    
    
    
    
}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容