Hibernate实体映射

来源:互联网 发布:php 编译扩展dll 编辑:程序博客网 时间:2024/06/05 18:49
Hibernate实体映射步骤
1
.写注释
    •格式为:?属性,表达的是本对象与?的?关系。
2,拷模板:
   

多对一

<many-to-one name=“” class=“” column=“”/>

一对多(Set

<set name="">

        <key column=""></key>

        <one-to-many class=""/>

</set>

多对多(Set

<set name="" table="">

        <key column=""></key>

        <many-to-many class="" column=""/>

</set>


3,填空:
  •name属性:属性名(注释中的第1问号)
   •class属性:关联的实体类型(注释中的第2个问号)
   •column属性:
        •<many-to-onecolumn="..">:一般可以写成属性名加Id后缀,如属性为department,则column值写成departmentId
        •一对多中的<keycolumn="..">:从关联的对方(对方是多对一)映射中把column值拷贝过来。
        •多对多中的<keycolumn=“..”>:一般可以写成本对象的名加Id后缀,如本对象名为User,则写为userId
        •多对多中的<many-to-manycolumn=“..”>:一般可以写为关联对象的名称加Id后缀。
完成

示例:
实体类:
public class User {
    private Long id;
    private Department department;
    private Set<Role> roles = new HashSet<Role>();
    .......
}

public class Department {
    private Long id;
    private Set<User> users = new HashSet<User>();
    private Department parent;
    private Set<Department> children = new HashSet<Department>();
    .......
}

public class Role {
    private Long id;
    private Set<User> users = new HashSet<User>();
    private Set<Privilege> privileges = new HashSet<Privilege>();
    .........
}

public class Privilege {
    private Long id;
    private Set<Role> roles = new HashSet<Role>();
    private Privilege parent;
    private Set<Privilege> children = new HashSet<Privilege>();
    .........
}
映射文件:
<hibernate-mapping package="cn.usst.oa.domain">
    <class name="User" table="usst_user">
        <id name="id">
            <generator class="native" />
        </id>
        <!-- department属性,表示我与Department的多对一关系 -->
        <many-to-one name="department" class="Department" column="departmentId"></many-to-one>

        <!-- roles属性,表示我与Role的多对多关系 -->
        <set name="roles" table="usst_user_role">
            <key column="userId"></key>
            <many-to-many class="Role" column="roleId"></many-to-many>
        </set>
    </class>
</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">
    <class name="Department" table="usst_department">
        <id name="id">
            <generator class="native"/>
        </id>      
        <!-- users属性,表示我与User的一对多关系 -->
        <set name="users">
            <key column="departmentId"></key>
            <one-to-many class="User"/>
        </set>

        <!-- parent属性,表示我与Department(上级)的多对一关系 -->
        <many-to-one name="parent" class="Department" column="parentId"></many-to-one>

        <!-- children属性,表示我与Department(下级)的一对多关系 -->
        <set name="children" cascade="delete">
            <key column="parentId"></key>
            <one-to-many class="Department"/>
        </set>           
    </class>   
</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">
    <class name="Role" table="usst_role">
        <id name="id">
            <generator class="native" />
        </id>     
        <!-- users属性,表达了我与User的多对多关系 -->
        <set name="users" table="usst_user_role">
            <key column="roleId"></key>
            <many-to-many class="User" column="userId"></many-to-many>
        </set>
        <!-- privileges属性,表达了我与Privilege的多对多关系 -->
        <set name="privileges" table="itcast_role_privilege">
            <key column="roleId"></key>
            <many-to-many class="Privilege" column="privilegeId"></many-to-many>
        </set>
    </class>
</hibernate-mapping>

<hibernate-mapping package="cn.usst.oa.domain">
    <class name="Privilege" table="usst_privilege">
        <id name="id">
            <generator class="native" />
        </id>
         <!-- roles属性,表达了我与Role的多对多关系 -->
        <set name="roles" table="usst_role_privilege">
            <key column="privilegeId"></key>
            <many-to-many class="Role" column="roleId"></many-to-many>
        </set>

        <!-- parent属性,表达了我与Privilege(上级)的多对一关系 -->
        <many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>
        <!-- children属性,表达了我与Privilege(下级)的一对多关系 -->
        <set name="children" order-by="id ASC">
            <key column="parentId"></key>
            <one-to-many class="Privilege" />
        </set>
    </class>
</hibernate-mapping>

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫想退货商家不给退货地址怎么办 天天爱消除四星宠物等级已满怎么办 店不干了店里面的财神怎么办 微信显示登陆注册语言打不开怎么办 三星手机解锁以后突然不量怎么办 耐克、阿迪品牌鉴定买到假货怎么办 小米4c盒子不支持有线连接怎么办 一个手机号绑着两个小米账号怎么办 小米5s手机听筒声音小怎么办 淘宝上买手机买到翻新怎么办 小米6用久了很卡怎么办 淘宝商家发错误的退货地址怎么办 买苹果手机时查到了翻新机该怎么办 荣耀9青春版玩王者卡怎么办 红米4x手机声音突然成破音怎么办 红米pro玩王者荣耀卡怎么办 红米手机恢复出厂设置出错了怎么办 红米恢复出厂设置出错了怎么办 应聘工作上当收押金了该怎么办 红米1s密码忘了怎么办 红米1s刷机后开不了机怎么办 红米2a耗电超快怎么办 红米2a手机耗电快怎么办 红米4x触屏失灵怎么办 苹果恢复出厂设置后密码忘记怎么办 红米1s忘记密码锁屏了怎么办 红米3手机忘记解锁图案怎么办 小米5x手机录屏失败怎么办 红米4x手机wif信号不好怎么办 红米4x屏幕换了截屏不好使怎么办 红米手机2a卡慢怎么办? 红米手机连接无线网信号不好怎么办 小米4用久了很卡怎么办 红米4a关不了机怎么办 红米手机屏幕锁了忘记密码怎么办 手机锁了忘记密码怎么办 红米 红米4a开不开机怎么办 红米显示小人开不了机怎么办 红米手机找回微信密码怎么办 红米手机密码忘了怎么办数字锁 红米1s忘了密码怎么办