多くの多くのリレーショナル・マッピング(3)を休止状態休止状態多くのリレーショナルマッピング(C)

I.ユーザーおよびロールは、ユーザーが多くの例を実装します

 

User.javaの役割への参照を達成するために

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

輸入はjava.util.HashSet。
輸入java.util.Set; 

パブリッククラスユーザー{ 
    パブリックユーザ(){ 
        
    }     
    
    パブリックユーザ(文字列のユーザーID、文字列ユーザ名、文字列userPwd){ 
        this.userid =ユーザーID。
        this.userName = userNameに。
        this.userPwd = userPwd。
    } 

    プライベート文字列のユーザーID。
    プライベート文字列のuserName; 
    プライベート文字列userPwd。
    プライベート設定<役割>役割=新しいHashSetの<役割>(); 
    
    パブリック文字列getUserid(){ 
        戻りユーザID、
    } 
    公共ボイドsetUserid(文字列のユーザーID){ 
        this.userid =ユーザーID。
    }
    パブリック文字列getUserName(){ 
        リターンのuserName。
    } 
    公共ボイドsetUserName(文字列のuserName){ 
        this.userName = userNameに。
    } 
    パブリック文字列getUserPwd(){ 
        リターンuserPwd。
    } 
    公共ボイドsetUserPwd(文字列userPwd){ 
        this.userPwd = userPwd。
    } 
    公共のセットの<role> getRoles(){ 
        役割を返します。
    } 
    公共ボイドsetRoles(セット<役割>役割){ 
        this.roles =ロール。
    } 
    
}
コードをコピー

 

User.hbm.xml設定ファイル、マップ、多くの多くの収集、およびカスケード効果を維持するために、ユーザーによって、カスケード効果を開きます

コードをコピー
<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 
                                   「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> 
の<hibernateマッピング> 
    <クラス名=" com.lxit.entity.User」テーブル= "ユーザー"> 
        <ID名= "USERID"タイプ= "java.lang.Stringで"> 
            <発電機クラス= "割り当て" /> 
        </ ID> 
        <プロパティ生成= "決して"怠惰= "false"の名前= "userNameに" 
            タイプ= "java.lang.Stringで"> 
            <列の長さ= "20"名前=」userNameに」非NULL = "真" /> 
        </ property>の 
        <プロパティ生成= "決して"怠惰= "false"の名前= "userPwd"
            タイプ= "java.lang.Stringで">
            <コラム長さ= "20"名= "userPwd"非NULL = "真" /> 
        </ property>の
        <セット名= "役割"表= "USER_ROLE"カスケード= "すべて"> 
            <キー列は= "USERID" /> 
            <多対多列= "roleid"クラス= "com.lxit.entity.Role" /> 
        </設定> 
    </クラス> 
</休止マッピング>
コードをコピー

 

Role.javaの文字クラスは、また、ユーザーのコレクションをマッピングしています

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

輸入はjava.util.HashSet。
輸入java.util.Set; 

パブリッククラスの役割{ 
    
    publicロール(){ 
    } 
    
    
    publicロール(文字列のroleName、列roleDesc){ 
        this.roleName =のroleName。
        this.roleDesc = roleDesc。
    } 


    プライベートint型roleId。
    プライベート文字列のroleName。
    プライベート文字列roleDesc。
    プライベート設定<ユーザー>ユーザー=新しいHashSetの<ユーザー>(); 
    
    
    公共int型getRoleId(){ 
        roleIdを返します。
    } 
    公共ボイドsetRoleId(INT roleId){ 
        this.roleId = roleId。
    } 
    パブリック文字列getRoleName(){  
        のroleNameを返します。
    }
    公共ボイドsetRoleName(文字列のroleName){ 
        this.roleName =のroleName。
    } 
    パブリック文字列getRoleDesc(){ 
        roleDescを返します。
    } 
    公共ボイドsetRoleDesc(文字列roleDesc){ 
        this.roleDesc = roleDesc。
    } 

    パブリックセット<ユーザー> getUsers(){ 
        ユーザーを戻します。
    } 

    公共ボイドsetUsers(セット<ユーザ>ユーザ){ 
        this.usersを=ユーザー。
    } 
}
コードをコピー

 

User.hbm.xmlマッピングファイル、マッピングユーザー対多の関係、及び逆=「true」に設定。

コードをコピー
<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 
「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> 
の<hibernateマッピング> 
    <クラス名=" com.lxit.entity.Role」テーブル= "ロール"> 
        <ID名= "roleId"タイプ= "java.lang.Integerの"> 
            <ジェネレータクラス= "天然"> </ジェネレータ> 
        </ ID> 
        <プロパティ名= "のroleName"タイプ= "java.lang.Stringで"> 
            <カラム名= "のroleName"長さ= "20"、nullでない=「真「> </コラム> 
        </ property>の
        <セット名= "ユーザー"テーブル= "USER_ROLE"逆= "真の"> 
            <キー列= "roleid"> </キー>
            <多対多列=「ユーザーID」クラス=「com.lxit.entity.User」/> 
        </設定>
    </クラス> 
</休止状態マッピング>
コードをコピー

 

マッピングマッピングファイルを追加します。

<マッピングリソース= "COM / lxit /エンティティ/ Role.hbm.xml" /> 
<マッピングリソース= "COM / lxit /エンティティ/ User.hbm.xml" />

最後のテストクラス

コードをコピー
パブリック静的無効メイン(文字列[] args){ 
        役割SYS =新しい役割( "管理者"、 "系統管理员")。
        役割の先生=新しい役割( "教師"、 "教师"); 
        
        ユーザーUSER1 =新しいユーザー( "管理者"、 "管理员"、 "123123"); 
        ユーザuser2 =新しいユーザー( "zhangsan"、 "张三疯"、 "123123"); 
        
        user1.getRoles()(SYS)を追加します。
        user1.getRoles()(教師)を追加します。
        user2.getRoles()(教師)を追加します。
        
        
        セッションsession = HibernateUtil.getSession(); 
        トランザクションTX = session.beginTransaction(); 
        //session.save(sys); 
        //session.save(teacher); 
        
        session.save(USER1)。
        session.save(USER2)。
        tx.commit(); 
        
}
コードをコピー

 

上記の、あなただけが特権の効果を達成するためにサード多くのテーブルを使用する必要があり、自動的に多くの権限に多くを生成するユーザーに役割を追加する必要があります。あなたは、3番目のテーブルにマップファイルを追加することはできません。

I.ユーザーおよびロールは、ユーザーが多くの例を実装します

 

User.javaの役割への参照を達成するために

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

輸入はjava.util.HashSet。
輸入java.util.Set; 

パブリッククラスユーザー{ 
    パブリックユーザ(){ 
        
    }     
    
    パブリックユーザ(文字列のユーザーID、文字列ユーザ名、文字列userPwd){ 
        this.userid =ユーザーID。
        this.userName = userNameに。
        this.userPwd = userPwd。
    } 

    プライベート文字列のユーザーID。
    プライベート文字列のuserName; 
    プライベート文字列userPwd。
    プライベート設定<役割>役割=新しいHashSetの<役割>(); 
    
    パブリック文字列getUserid(){ 
        戻りユーザID、
    } 
    公共ボイドsetUserid(文字列のユーザーID){ 
        this.userid =ユーザーID。
    }
    パブリック文字列getUserName(){ 
        リターンのuserName。
    } 
    公共ボイドsetUserName(文字列のuserName){ 
        this.userName = userNameに。
    } 
    パブリック文字列getUserPwd(){ 
        リターンuserPwd。
    } 
    公共ボイドsetUserPwd(文字列userPwd){ 
        this.userPwd = userPwd。
    } 
    公共のセットの<role> getRoles(){ 
        役割を返します。
    } 
    公共ボイドsetRoles(セット<役割>役割){ 
        this.roles =ロール。
    } 
    
}
コードをコピー

 

User.hbm.xml設定ファイル、マップ、多くの多くの収集、およびカスケード効果を維持するために、ユーザーによって、カスケード効果を開きます

コードをコピー
<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 
                                   「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> 
の<hibernateマッピング> 
    <クラス名=" com.lxit.entity.User」テーブル= "ユーザー"> 
        <ID名= "USERID"タイプ= "java.lang.Stringで"> 
            <発電機クラス= "割り当て" /> 
        </ ID> 
        <プロパティ生成= "決して"怠惰= "false"の名前= "userNameに" 
            タイプ= "java.lang.Stringで"> 
            <列の長さ= "20"名前=」userNameに」非NULL = "真" /> 
        </ property>の 
        <プロパティ生成= "決して"怠惰= "false"の名前= "userPwd"
            タイプ= "java.lang.Stringで">
            <コラム長さ= "20"名= "userPwd"非NULL = "真" /> 
        </ property>の
        <セット名= "役割"表= "USER_ROLE"カスケード= "すべて"> 
            <キー列は= "USERID" /> 
            <多対多列= "roleid"クラス= "com.lxit.entity.Role" /> 
        </設定> 
    </クラス> 
</休止マッピング>
コードをコピー

 

Role.javaの文字クラスは、また、ユーザーのコレクションをマッピングしています

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

輸入はjava.util.HashSet。
輸入java.util.Set; 

パブリッククラスの役割{ 
    
    publicロール(){ 
    } 
    
    
    publicロール(文字列のroleName、列roleDesc){ 
        this.roleName =のroleName。
        this.roleDesc = roleDesc。
    } 


    プライベートint型roleId。
    プライベート文字列のroleName。
    プライベート文字列roleDesc。
    プライベート設定<ユーザー>ユーザー=新しいHashSetの<ユーザー>(); 
    
    
    公共int型getRoleId(){ 
        roleIdを返します。
    } 
    公共ボイドsetRoleId(INT roleId){ 
        this.roleId = roleId。
    } 
    パブリック文字列getRoleName(){  
        のroleNameを返します。
    }
    公共ボイドsetRoleName(文字列のroleName){ 
        this.roleName =のroleName。
    } 
    パブリック文字列getRoleDesc(){ 
        roleDescを返します。
    } 
    公共ボイドsetRoleDesc(文字列roleDesc){ 
        this.roleDesc = roleDesc。
    } 

    パブリックセット<ユーザー> getUsers(){ 
        ユーザーを戻します。
    } 

    公共ボイドsetUsers(セット<ユーザ>ユーザ){ 
        this.usersを=ユーザー。
    } 
}
コードをコピー

 

User.hbm.xmlマッピングファイル、マッピングユーザー対多の関係、及び逆=「true」に設定。

コードをコピー
<?xml version = "1.0"エンコード= "UTF-8"?> 
<DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 
「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> 
の<hibernateマッピング> 
    <クラス名=" com.lxit.entity.Role」テーブル= "ロール"> 
        <ID名= "roleId"タイプ= "java.lang.Integerの"> 
            <ジェネレータクラス= "天然"> </ジェネレータ> 
        </ ID> 
        <プロパティ名= "のroleName"タイプ= "java.lang.Stringで"> 
            <カラム名= "のroleName"長さ= "20"、nullでない=「真「> </コラム> 
        </ property>の
        <セット名= "ユーザー"テーブル= "USER_ROLE"逆= "真の"> 
        </設定> 
            <キー列= "roleid"> </キー>
            <多対多列=「ユーザーID」クラス=「com.lxit.entity.User」/>
    </クラス> 
</休止状態マッピング>
コードをコピー

 

マッピングマッピングファイルを追加します。

<マッピングリソース= "COM / lxit /エンティティ/ Role.hbm.xml" /> 
<マッピングリソース= "COM / lxit /エンティティ/ User.hbm.xml" />

最後のテストクラス

コードをコピー
パブリック静的無効メイン(文字列[] args){ 
        役割SYS =新しい役割( "管理者"、 "系統管理员")。
        役割の先生=新しい役割( "教師"、 "教师"); 
        
        ユーザーUSER1 =新しいユーザー( "管理者"、 "管理员"、 "123123"); 
        ユーザuser2 =新しいユーザー( "zhangsan"、 "张三疯"、 "123123"); 
        
        user1.getRoles()(SYS)を追加します。
        user1.getRoles()(教師)を追加します。
        user2.getRoles()(教師)を追加します。
        
        
        セッションsession = HibernateUtil.getSession(); 
        トランザクションTX = session.beginTransaction(); 
        //session.save(sys); 
        //session.save(teacher); 
        
        session.save(USER1)。
        session.save(USER2)。
        tx.commit(); 
        
}
コードをコピー

 

上記の、あなただけが特権の効果を達成するためにサード多くのテーブルを使用する必要があり、自動的に多くの権限に多くを生成するユーザーに役割を追加する必要があります。あなたは、3番目のテーブルにマップファイルを追加することはできません。

おすすめ

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