Hibernate_9_Person和IdCard实例_一对一关系:基于主键

1)建立Person类:(与8相同)

2)建立IdCard类:(与8相同)

3)建立持久化类:

 1>保存方法(与8相同)

 2>获取方法(与8相同)

 3>删除方法(与8相同)

 4> 解除关联的方法:

/**
	 * 解除关联关系的方法
	 */
	@Test
	public void testRemoveRelation() {
		Session session = SessionFactoryTools.getSession();
		Transaction tx = null;
		try {
			tx = session.beginTransaction();

			// ===============================================

			/**
			 * 获取person对象并将其关联的IdCard设置为空 在一对一中,
			 * 由于一方不具有外键管理权,所以解除外键关联是不能实现的
			* Person person = (Person) session.get(Person.class, 1);
			 * person.setIdCard(null);
			 */
			
			/**
			 * 获取idCard对象并将其相关联的person设置为空 在一对一中,
			 * 由于具有外键方的外键为本方的主键,不可以设置为空,
			 * 所以该外键的解除是可以实现的
			* IdCard idCard = (IdCard) session.get(IdCard.class, 1);
			 * idCard.setPerson(null);
			 */
			
			// ===============================================
			tx.commit();
		} catch (RuntimeException e) {
			if (tx != null) {
				tx.rollback();
			}
			throw e;
		} finally {
			session.close();
		}
	}

4)Person.hbm.xml文件的配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="map_4">
	<!--
		基于主键的一对一方式,本方无外键
		类名:Person 
		类对应的表名:person 
		一对一对应类:IdCard
		一对一对应的表:idCard
		一对一所对应的外键的属性名:person
	-->
	<class name="Person" table="person">

		<id name="id" type="int" column="id">
			<generator class="native" />
		</id>
		<property name="name" type="string" column="name" length="20" />

		<one-to-one name="idCard" class="IdCard"></one-to-one>

	</class>
</hibernate-mapping>

5)IdCard.hbm.xml文件的配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="map_4">
	<!--
		基于外键的一对一方式,本方有外键
		类名:IdCard 
		类对应的表名:idCard
		多对一对应类的表名:person
		多对一对应的类名:Person
		主键生成策略为:外键
		参数preoperty:生成主键时所根据的对象
		属性 constrained设置为:有外键约束
	-->
	<class name="IdCard" table="idCard">

		<id name="id" type="int" column="id">
			<generator class="foreign" >
				<param name="property">person</param>
			</generator>
		</id>
		<property name="number" type="string" column="number" />
		
		<one-to-one name="person" class="Person" constrained="true">
</one-to-one>
	</class>
</hibernate-mapping>
6)主文件配置(与8相同)。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值