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"?6)主文件配置(与8同样)。> <!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>