首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate入门(7)关联关系讨论_组件关系映射

2012-10-17 
hibernate入门(七)关联关系讨论_组件关系映射典型实例:每个人有不同的名字,或者多个人可以是同一个名字,对

hibernate入门(七)关联关系讨论_组件关系映射

典型实例:每个人有不同的名字,或者多个人可以是同一个名字,对于这种现象可以是“一个一”或者“多对一”,这样会被设计成两张表来映射,而我们采用组件关系来映射就可以在一张表中映射实现。具体过程如下:

>>步骤一、编写实体文件Name.java 和People.java

Name.java内容如下: 省略getXXX和setXXX()

packagecom.asm.hibernate.domain;

public class Name {

??? private String firstName;

??? private String secondName;

}

Name.java内容如下: 省略getXXX和setXXX()

packagecom.asm.hibernate.domain;

public class People {

??? private int id;

??? private Name name;?

}

>>步骤二、编写配置文件People.hbm.xml内容如下:

<hibernate-mapping

??? package="com.asm.hibernate.domain">

?

??? <class name="People">

?????? <id name="id">

?????????? <generator class="native"/>

?????? </id>

??? <componentname="name">

?????? <propertyname="firstName" column="first_name"></property>

?????? <propertyname="secondName" column="second_name"></property>

??? </component>

??? </class>

</hibernate-mapping>

说明:尽管在上一步,说Name为实体配置文件,但这里并不为为它写配置文件,它实质相当于一个更一般化的属性,且这个属性是在People的实体配置文件中用〈component〉元素来进行配置的,它的name属性是随意随的有意义的名字,而其子元素分别为Name类的属性值。

>>步骤三、在主配置文件中关联此实体配置文件:

<mapping resource="com/asm/hibernate/domain/People.hbm.xml"/>

>>步骤四,编写测试类,内容如下:省略导入的包

packagecom.asm.hibernate.test;

public class ComponentTest {

?

??? public static void main(String[] args) {

?????? Name n = new Name();

?????? n.setFirstName("zhang");

?????? n.setSecondName("san");

?????? People p = new People();

?????? p.setName(n);????

?????? add(p);

??? }

?

??? static void add(People p) {

?????? Session s = null;

?????? Transaction ts = null;

?????? try {

?????????? s = HibernateUtil.getSession();

?????????? ts = s.beginTransaction();

?????????? s.save(p);

?????????? ts.commit();

?????? } catch (HibernateException e) {

?????????? if (ts != null)

????????????? ts.rollback();

?????????? throw e;

?????? } finally {

?????????? if (s != null)

????????????? s.close();

?????? }

??? }

}

//说明:这种映射较简单,执行后可以查看下表结构。

6.总结关联关系:

在理解Hibernate如何处理这些对象之间的关联关系的底层细节时,考虑如何实现把这种关系保存到数据库,考虑如可检索出关联对象。

热点排行