• 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同样)。



  • 相关阅读:
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    AtCoder Grand Contest 013 题解
    AtCoder Grand Contest 012 题解
    AtCoder Grand Contest 011 题解
    AtCoder Grand Contest 010 题解
    AtCoder Grand Contest 009 题解
    NOIP2017 Day2 题解
    博客园主题备份
    多项式全家桶
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7016520.html
Copyright © 2020-2023  润新知