1.Hibernate单向有链接表映射

多的一方的映射文件

<hibernate-mapping package="XXX">//对应的包
	<!-- 映射Person持久化类-->
	<class name="Person" table="person_inf">
		<!-- 映射标识属性id -->
		<id name="id" column="person_id">
			<!-- 定义主键生成器策略 -->
			<generator class="identity"/>
		</id>
		<property name="name" type="string"/>
		<property name="age" type="int"/>
		<!-- 映射集合属性,集合元素是其他持久化实体指定连接表的表名-->
		<set name="addresses" table="person_address">
			<!-- 指定连接表中参照本表记录的外键列名 -->
			<key column="person_id" />
			<!-- 使用many-to-many来映射1-N关联,增加unique="true"确保单一 -->
			<many-to-many class="Address" column="address_id" unique="true"/>
		</set>
	</class>
</hibernate-mapping>

单方的映射文件

<hibernate-mapping package="XXX"><span style="font-family: Arial, Helvetica, sans-serif;">//对应的包</span>
	<!-- Address持久化类-->
	<class name="Address" table="address_inf">//链接表
		<id name="addressId" column="address_id">
			<!-- 指定主键生成器策略 -->
			<generator class="identity"/>
		</id>
		<!-- 映射普通属性addressdetail -->
		<property name="addressDetail"/>
	</class>
</hibernate-mapping>

重点是在关系映射时

<span style="white-space:pre">	</span>Person p = new Person();
	//创建一个瞬态的Address对象
	Address a = new Address("广州天河");
	//必须先持久化Address对象
	session.persist(a);						  //①
	//设置Person的Name为Yeeku字符串
	p.setName("Yeeku");
	p.setAge(29);
	//设置Person和Address之间的关联关系
	p.getAddresses().add(a);
	//持久化Person对象
	session.save(p);
	//创建一个瞬态的Address对象
	Address a2 = new Address("上海虹口");
	//先持久化Address对象
	session.persist(a2);						//②
	//修改持久化状态的Person对象
	p.getAddresses().add(a2);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值