hibernate关于ORM映射文件配置(包括单文件、一对一、一对多、多对多等)

来源:互联网 发布:如何测试网络 编辑:程序博客网 时间:2024/06/03 19:49

单文件配置:

<span style="font-size:24px;"><hibernate-mapping><!--<span style="color:#ff0000;"> name为类的全路径,table为表名</span> --><class name="com.lovo.bean.MessageBean" table="t_user"><!-- <span style="color:#ff0000;">定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 </span>--><id name="id" column="id"><!-- <span style="color:#ff0000;">定义主键生成策略 ,native表示利用数据库的主键自动增长列来生成主键</span>--><generator class="native"></generator></id><!-- <span style="color:#ff0000;">定义普通属性</span> --><property name="userName"></property><property name="tel"></property></class></hibernate-mapping></span>


一对一文件配置:

1)主表所对应的文件配置方法:

<span style="font-size:24px;"><hibernate-mapping><!-- <span style="color:#ff0000;">name为类的全路径,table为表名</span> --><class name="com.lovo.bean.ManBean" table="t_man"><!-- <span style="color:#ff0000;">定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写</span> --><id name="id" column="id"><!-- <span style="color:#ff0000;">定义主键生成策略 ,native表示利用数据库的主键自动增长列来生成主键</span>--><generator class="native"></generator></id><!-- <span style="color:#ff0000;">定义普通属性</span> --><property name="manName"></property><!-- <span style="color:#ff0000;">name为属性名,class为该属性的类型,cascade表示当对主表对象操作时,从表对象是否做级联操作</span> --><one-to-one name="code" class="com.lovo.bean.CodeBean" cascade="all"></one-to-one></class><span style="color:#ffffff;"></hibernate-mapping></span></span>

2)从表所对应的文件配置方法:

<span style="font-size:24px;"><hibernate-mapping><!-- name为类的全路径,table为表名 --><class name="com.lovo.bean.CodeBean" table="t_code"><!-- 定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 --><id name="id" column="id"><!-- <span style="color:#ff0000;">foreign表示该主键同时也是外键</span>--><generator class=<span style="color:#ff0000;">"<strong>foreign</strong></span>"><!-- <span style="color:#ff0000;">man为属性名,表示该主键由ManBean对象的主键生成</span> --><param name="property">man</param></generator></id><!-- 定义普通属性 --><property name="codeName"></property><!-- <span style="color:#ff0000;">costrined表示该表的主键存在外键约束</span> --><!--l<span style="color:#ff0000;">azy="false"表示取消延迟加载,查询该对象时,关联对象立即查询</span>  --><<span style="color:#ff0000;"><strong>one-to-one</strong></span> name="man" class="com.lovo.bean.ManBean"constrained="true" lazy="false"></one-to-one></class></hibernate-mapping></span>


一对多文件配置:

1)主表所对应的 映射文件:

<hibernate-mapping><!-- name为类的全路径,table为表名 --><class name="com.lovo.bean.UserBean" table="t_user2"><!-- 定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 --><id name="id" column="id"><!-- 定义主键生成策略 ,native表示利用数据库的主键自动增长列来生成主键--><generator class="native"></generator></id><!-- 定义普通属性 --><property name="userName"></property><property name="birthday"></property><set name="roomSet" inverse="true"><!-- <span style="color:#ff0000;">配置从表外键</span> --><key column="userId"></key><!-- <span style="color:#ff0000;">配置一对多,指定集合存放元素的类型</span> --><<strong><span style="color:#ff0000;">one-to-many</span></strong> class="com.lovo.bean.RoomBean"/></set></class></hibernate-mapping><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>

2)从表所对应的 映射文件:

<hibernate-mapping><!-- name为类的全路径,table为表名 --><class name="com.lovo.bean.RoomBean" table="t_room"><!-- 定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 --><id name="id" column="id"><!-- 定义主键生产策略 ,native表示利用数据库的主键自动增长列来生成主键--><generator class="native"></generator></id><!-- 定义普通属性 --><property name="address"></property><property name="price"></property><!--<strong><span style="color:#ff0000;">一对多</span></strong>, lazy="false"解决懒加载异常问题--><<span style="color:#ff0000;"><strong>many-to-one</strong></span> name="user" class="com.lovo.bean.UserBean"column="userId" lazy="false"></many-to-one></class></hibernate-mapping>


多对多文件配置:(在数据库中需要中间表来关联)

1)主表所对应的 映射文件:
<hibernate-mapping><!-- name为类的全路径,table为表名 --><class name="com.lovo.bean.RoleBean" table="t_role"><!-- 定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 --><id name="id" column="id"><!-- 定义主键生产策略 ,native表示利用数据库的主键自动增长列来生成主键--><generator class="native"></generator></id><!-- 定义普通属性 --><property name="roleName"></property><!-- <span style="color:#ff0000;">talbe为中间表的表名</span> --><set name="gradeSet" table="t_role_grade"><!-- <span style="color:#ff0000;">当前对象对应中间表的外键列名</span> --><key column="roleId"></key><!-- <span style="color:#ff0000;">class为集合中存放元素的类型,</span>
<span style="color:#ff0000;"><span style="white-space:pre"></span>column为集合中存放元素对应的中间表的外键列名</span> --><<span style="color:#ff0000;">many-to-many</span> class="com.lovo.bean.GradeBean" column="gradeId"></many-to-many></set></class></hibernate-mapping><span style="color:#ff0000;"></span>

2)从表所对应的 映射文件:

<hibernate-mapping><!-- name为类的全路径,table为表名 --><class name="com.lovo.bean.GradeBean" table="t_grade"><!-- 定义主键,name表示哪个属性对应主键列,如果属性名和列名一致,column可以不写 --><id name="id" column="id"><!-- 定义主键生成策略 ,native表示利用数据库的主键自动增长列来生成主键--><generator class="native"></generator></id><!-- 定义普通属性 --><property name="gradeName"></property><set name="roleSet" table="t_role_grade"><!-- <span style="color:#ff0000;">配置从表外键</span> --><key column="gradeId"></key><!-- <span style="color:#ff0000;">配置一对多,指定集合存放元素的类型</span> --><<strong><span style="color:#ff0000;">many-to-many</span></strong> class="com.lovo.bean.RoleBean" column="roleId"/></set></class></hibernate-mapping>






0 0
原创粉丝点击