リレーショナル・マッピング(3)とHibernateマッピング(3)と多対多の間の多対多の関係を休止

まず、1の多くの

生徒や学生のクラスは生徒のクラスの複数に対応する、多対グレードを実装します。

Student.javaエンティティクラスは、クラス属性がマッピングされています。

コードをコピー
パッケージcom.lxit.entity。

インポートしたjava.io.Serializable;

パブリッククラス学生シリアライズ{実装
    
    パブリック学生(){
    }

    公共学生(文字列SNAME、ストリング性別、列アドレス){
        this.sname = SNAME。
        this.sex =セックス。
        this.address =アドレス。
    }

    公共学生(文字列SNAME、ストリング性別、列アドレス、グレードグレード){
        this.sname = SNAME。
        this.sex =セックス。
        this.address =アドレス。
        this.grade =グレード;
    }

    プライベートint型のSID。
    プライベート文字列SNAME。
    プライベート文字列のセックス。
    アドレスプライベート文字列;
    
    //一方向多対:のいずれかのパッケージのうちの一つでエンティティ・オブジェクト
    のプライベートグレードグレード;
    
    GETSIDパブリックINT(){
        SIDを返す;
    }
    公共ボイドがsetsid(SIDをINT){
        this.sid = SID ;
    }
    パブリック文字列getSname(){
        戻りSNAME;
    }
    公共ボイドsetSname(文字列SNAME){
        this.sname SNAME =;
    }
    パブリック文字列getSex(){
        セックスを返す;
    }
    公共ボイドsetSex(文字列セックス){
        this.sexセックス= ;
    }
    パブリック文字列のgetAddress(){
        リターンアドレス。
    }
    公共ボイドsetAddress(列アドレス){
        this.address =アドレス。
    }

    公共グレードgetGrade(){
        グレードを返します。
    }

    公共ボイドsetGrade(グレードグレード){
        this.grade =グレード。
    }

    @Override
    パブリック文字列のtoString(){
        リターン"学生[SID =" + SID + "SNAME =" + SNAME + "性別=" +性別
                + "アドレス=" +アドレス+ "]"。
    }
コードをコピー

 

Student.hbm.xml学生マッピングファイル、および多くの関係のクラスを追加 

コードをコピー
<?xmlのバージョン= "1.0">
<!DOCTYPE休止状態マッピングPUBLIC " - //休止/休止状態のマッピングDTD 3.0 // EN"
「http://www.hibernate.org/dtd/hibernate-mapping-3.0。 DTD ">

の<hibernateマッピング>
    < -实体映射文件:!将实体对象映射为数据库中的字段- >
     <クラス名=" com.lxit.entity.Student」表= "学生">
         <id名= "SID"欄= "SID">
             <ジェネレータクラス= "天然"> </ジェネレータ>
         </ ID>
         <プロパティ名= "SNAME"カラム= "SNAME"タイプ= "java.lang.Stringで"> </プロパティ>
         <プロパティ名=「性別」欄=「セックス」> < /プロパティ>
         <プロパティ名= "アドレス"欄= "アドレス"> </プロパティ>
         <! - 1つのマッピング関係を実現します- >
         <多対一名=「グレード」クラス=「com.lxit.entity.Grade」欄=「GID」怠惰=「偽」> </多対1>
     </クラス>
コードをコピー

</休止状態マッピング> 

 

 

第二に、多くの 

クラスと学生対多のマッピングされたGrade.javaエンティティクラスは、生徒のコレクションが含まれています。 

コードをコピー
パッケージcom.lxit.entity。

インポートしたjava.io.Serializable;
輸入はjava.util.HashSet。
輸入java.util.Set;

パブリッククラスグレードシリアライズ{実装
    
    パブリックグレード(){
    }
    
    公共グレード(文字列gnameという)を{
        this.gname = gnameという。
    }
    
    //在一方添加多方的集合
    公共の設定<学生>学生=新しいHashSetの<学生>();


    プライベートint型のGID。
    プライベート文字列gnameは、
    
    公共INT GETGID(){
        戻りGID。
    }
    公共ボイドのsetgid(INTのGID){
        this.gid = GID。
    }
    パブリック文字列getGname(){
        gnameはを返します。
    }
    公共ボイドsetGname(文字列gnameは){
        this.gname = gnameという。
    }

    公共の設定<学生> getStudents(){
        生徒を返します。
    }

    パブリック無効setStudents(セット<学生>学生){
        this.students =学生。
    } 

コードをコピー

 

グレードマッピングファイル 

コードをコピー
<?xmlのバージョン= "1.0">
<!DOCTYPE休止状態マッピングPUBLIC " - //休止/休止状態のマッピングDTD 3.0 // EN"
「http://www.hibernate.org/dtd/hibernate-mapping-3.0。 DTD ">

の<hibernateマッピング>
    < -实体映射文件:!将实体对象映射为数据库中的字段- >
     <クラス名=" com.lxit.entity.Grade」表= "グレード">
         <id名= "GID"欄= "GID">
             <ジェネレータクラス= "天然"> </ジェネレータ>
         </ ID>
         <プロパティ名= "gnameは"タイプ= "java.lang.Stringで">
             <カラム名= "gnameは"長さ= "20"> </列>
         < /プロパティ>
         <! - 
             逆:友人は、それが外部キーを維持するために、当事者の責任を維持すると述べ、デフォルトはfalseです
             カスケード:あなたは、クラスを保存するとき、学生が対応するクラスに保存され、カスケード効果を示します
         - >
         <セット名= "学生"表= "学生"カスケード= "すべて">
             <キー列= "GID"> </ key>を
             <1対多のクラス= "com.lxit.entity.Student" />
         </設定>
     </クラス>

</休止状態マッピング> 

コードをコピー

まず、1の多くの

生徒や学生のクラスは生徒のクラスの複数に対応する、多対グレードを実装します。

Student.javaエンティティクラスは、クラス属性がマッピングされています。

コードをコピー
パッケージcom.lxit.entity。

インポートしたjava.io.Serializable;

パブリッククラス学生シリアライズ{実装
    
    パブリック学生(){
    }

    公共学生(文字列SNAME、ストリング性別、列アドレス){
        this.sname = SNAME。
        this.sex =セックス。
        this.address =アドレス。
    }

    公共学生(文字列SNAME、ストリング性別、列アドレス、グレードグレード){
        this.sname = SNAME。
        this.sex =セックス。
        this.address =アドレス。
        this.grade =グレード;
    }

    プライベートint型のSID。
    プライベート文字列SNAME。
    プライベート文字列のセックス。
    プライベート文字列のアドレス。
    
    @一方向多対:エンティティのいずれかのパッケージのうちの一つでオブジェクトを
    、専用グレードグレード
    
    公共int型GETSID(){
        SIDを返す;
    }
    公共ボイドがsetsid(INT SID){
        this.sid = SID;
    }
    パブリック文字列getSname(){
        戻りSNAME;
    }
    公共ボイドsetSname(文字列SNAME){
        this.sname SNAME =;
    }
    パブリック文字列getSex(){
        セックスを返す;
    }
    公共ボイドsetSex(文字列セックス){
        this.sexセックス=;
    }
    パブリック文字列getAddress(){
        アドレスを返します;
    }
    公共ボイドsetAddress(列アドレス){
        this.address =アドレス。
    }

    公共グレードgetGrade(){
        グレードを返します。
    }

    公共ボイドsetGrade(グレードグレード){
        this.grade =グレード。
    }

    @Override
    パブリック文字列のtoString(){
        リターン"学生[SID =" + SID + "SNAME =" + SNAME + "性別=" +性別
                + "アドレス=" +アドレス+ "]"。
    }
コードをコピー

 

Student.hbm.xml学生マッピングファイル、および多くの関係のクラスを追加 

コードをコピー
<?xmlのバージョン= "1.0">
<!DOCTYPE休止状態マッピングPUBLIC " - //休止/休止状態のマッピングDTD 3.0 // EN"
「http://www.hibernate.org/dtd/hibernate-mapping-3.0。 DTD ">

の<hibernateマッピング>
    < -实体映射文件:!将实体对象映射为数据库中的字段- >
     <クラス名=" com.lxit.entity.Student」表= "学生">
         <id名= "SID"欄= "SID">
             <ジェネレータクラス= "天然"> </ジェネレータ>
         </ ID>
         <プロパティ名= "SNAME"カラム= "SNAME"タイプ= "java.lang.Stringで"> </プロパティ>
         <プロパティ名= "性別"欄= "セックス"> </ property>の
         <プロパティ名= "アドレス"欄= "アドレス"> </プロパティ>
         <! - 1つのマッピング関係を実現します- >
         <多対一名=「グレード」クラス=「com.lxit.entity.Grade」欄=「GID」怠惰=「偽」> </多対1>
     </クラス>
コードをコピー

</休止状態マッピング> 

 

 

第二に、多くの 

クラスと学生対多のマッピングされたGrade.javaエンティティクラスは、生徒のコレクションが含まれています。 

コードをコピー
パッケージcom.lxit.entity。

インポートしたjava.io.Serializable;
輸入はjava.util.HashSet。
輸入java.util.Set;

パブリッククラスグレードシリアライズ{実装
    
    パブリックグレード(){
    }
    
    公共グレード(文字列gnameという)を{
        this.gname = gnameという。
    }
    
    //在一方添加多方的集合
    公共の設定<学生>学生=新しいHashSetの<学生>();


    プライベートint型のGID。
    プライベート文字列gnameは、
    
    公共INT GETGID(){
        戻りGID。
    }
    公共ボイドのsetgid(INTのGID){
        this.gid = GID。
    }
    パブリック文字列getGname(){
        戻りgnameという。
    }
    公共ボイドsetGname(文字列gnameは){
        this.gname = gnameという。
    }

    公共の設定<学生> getStudents(){
        生徒を返します。
    }

    パブリック無効setStudents(セット<学生>学生){
        this.students =学生。
    } 

コードをコピー

 

グレードマッピングファイル 

コードをコピー
<?xmlのバージョン= "1.0">
<!DOCTYPE休止状態マッピングPUBLIC " - //休止/休止状態のマッピングDTD 3.0 // EN"
「http://www.hibernate.org/dtd/hibernate-mapping-3.0。 DTD ">

の<hibernateマッピング>
    < -实体映射文件:!将实体对象映射为数据库中的字段- >
     <クラス名=" com.lxit.entity.Grade」表= "グレード">
         <id名= "GID"欄= "GID">
             <ジェネレータクラス= "天然"> </ジェネレータ>
         </ ID>
         <プロパティ名= "gnameは"タイプ= "java.lang.Stringで">
             <カラム名= "gnameは"長さ= "20"> </列>
         </プロパティ>
         <! - 
             逆:友人は、それが外部キーを維持するために、当事者の責任を維持すると述べ、デフォルトはfalseです
             カスケード:あなたは、クラス、保存する生徒に対応するクラスを保存するときに、カスケード効果を示します
         。 - >
         <セット名= "学生"表= "学生"カスケード= "すべて">
             <キー列= "GID"> </ key>を
             <1対多のクラス= "com.lxit.entity.Student" />
         < /設定>
     </クラス>

</休止状態マッピング> 

コードをコピー

おすすめ

転載: www.cnblogs.com/Jeely/p/11226179.html