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

单文件配置:

<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>






  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值