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



  • 相关阅读:
    bridge桥接模式
    docker部署mysql实现远程访问
    翻下旧资料,发现96年考过foxbase二级
    这几年专注于流程管理与RPA落地
    201521123080《Java程序设计》第10周学习总结
    201521123034《Java程序设计》第十周学习总结
    Beta版本冲刺计划及安排
    团队作业7——Alpha冲刺之事后诸葛亮
    团队作业6——展示博客(Alpha版本)
    团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7016520.html
Copyright © 2020-2023  润新知