`
persistC
  • 浏览: 73092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate 三

阅读更多
Hibernate中对类关系的处理:
一、 one―to―one关系在数据库中如何体现,在JavaBean中如何体现,在
Hibernate中如何映射one-to-one关系。           
1、 数据库中:一个表的外健对应另一个表的主健,外健要加上Unique约束(外健关联)。或者是两个表共享一个主健,表现为子表中的pk同时引用了父表的pk作外健而存在(主健关联,子表中的pk和fk为一个字段)。
2、 javaBean中:在JavaBean中增加一个属性,即另外一个对象的引用,可以单向也可以双向。
3、 在hibernate中:

A、主健映射:都是one-to-one要用foreign生成策略。
   以汽车car和发动机Engine(一对一关系)为例:
  a、主表Car.hbm.xml的写法
<class name="Car" table="car_pk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="name" column="name" type="string" />
    <one-to-one name="engine" class="Engine" cascade="all"/>
  </class>
注:cascade="all" 表示增删改查Car对象时都会级联增加、删除和修改Engine对象。
  级联一定是在主对象的映射文件中

  b、附表Engine.hbm.xml的写法
<class name="Engine" table="engine_pk">
    <id name="id" column="id" type="integer">
      <generator class="foreign">
        <param name="property">car</param>
      </generator>
    </id>
    <property name="model" column="model" type="string" />
    <one-to-one name="car" class="Car" constrained="true"/>
  </class>
注:constrained="true"表示Engine应用了Car的主健作为外健。

B、外健映射:主表中用one-to-one,通过property -ref many-to-one
  a、主表Car.hbm.xml的写法
<class name="Car" table="car_fk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="name" column="name" type="string" />
<one-to-one name="engine" class="Engine"
property-ref="car" cascade="save-update"/>
  </class>
注:name="engine" property-ref="car"表示engine表引用了car表的主健作为他的外健。
cascade="save-update"表示增改Car对象时都会级联增加和修改Engine对象。

  b、附表Engine.hbm.xml的写法
<class name="Engine" table="engine_fk">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="model" column="model" type="string" />
<many-to-one name="car" class="Car"
unique="ture"  column="carid"/>
  </class>
注:unique="ture" column="carid"表示为engine表中的外健carid加上唯一约束,使之一对多关系强制转化为一对一关系。


二、 many-to-one关系在数据库中如何体现,在JavaBean中如何体现,在
Hibernate中如何映射many-to-one关系。
1、 数据库中:一个表的主健对应另一个表的外健。
2、 javaBean中:一个对象包含另一个对象的一个引用,另一个对象包含这个对象的一组(集合,用set)引用。
3、 在hibernate中:用set.key指定具体列。
我们以订单Order(一方)和订单项Item(多方)为例:

a、Order.hbm.xml的写法:
<class name="Order" table="ec_order">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="owner" column="owner" type="string" />
    <property name="phone" column="phone" type="string" />
    <property name="address" column="address" type="string" />
    <set  name="items" cascade="all-delete-orphan" inverse="true">
      <key column="orderid" />
      <one-to-many class="Item" />
    </set>
  </class>
注:inverse=“true”表示忽略集合一端的变化。
cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把cascade设为all的情况:在我们调用session.delete(order)时,会删除order下所有的item,但是如果调用order.getItems().remove(item),然后调用session.update(order)则不会删除此item,只会把 ec_item表中该条item记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上“delete-orphan”。


b、Item.hbm.xml的写法
<class name="Item" table="ec_item">
    <id name="id" column="id" type="integer">
      <generator class="native" />
    </id>
    <property name="product" column="product" type="string" />
    <property name="amount" column="amount" type="integer" />
    <many-to-one name="order" class="Order" column="orderid"/>
  </class>
分享到:
评论

相关推荐

    hibernate3 hibernate3

    三、Hibernate3的应用 1. 配置:在项目中,我们需要配置Hibernate的连接参数,包括数据库URL、用户名、密码等,以及实体类和数据库表的映射信息。 2. 实例化SessionFactory:SessionFactory是线程安全的,通常在...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3 是一个强大的Java持久化框架,它允许开发者将数据库操作与业务逻辑解耦,使得应用程序的开发更为简便。这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并...

    hibernate3.zip 包含hibernate3.jar

    这个`hibernate3.zip`压缩包包含了`hibernate3.jar`,它是Hibernate 3版本的核心库,包含了执行ORM(对象关系映射)所需的所有类和接口。 在Java开发中,Hibernate3主要提供了以下关键知识点: 1. **对象关系映射...

    hibernate3必要jar包

    1. **Hibernate3简介**:Hibernate3是Hibernate项目的第三个主要版本,它提供了一种对象关系映射(ORM)解决方案,允许开发人员使用面向对象的编程模型来处理关系数据库。它的目标是减少数据库访问的复杂性,提高...

    Hibernate3的依赖包

    Hibernate3是一个广泛使用的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与数据库之间的交互。在这个"Hibernate3的依赖包"中,包含了运行Hibernate3应用...

    hibernate3所需JAR包

    Hibernate3是中国Java开发社区中广泛使用的持久层框架之一,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。这个“hibernate3所需JAR包”包含了所有必要的组件,使得开发者能够在项目中顺利集成...

    hibernate所需包:hibernate3,依赖包,JDBC

    Hibernate3是Hibernate的第三个主要版本,发布于2005年,它提供了一种将Java对象与数据库表之间的映射方式,使得数据库操作更加面向对象。该框架支持多种数据库,包括MySQL、Oracle、SQL Server等,并且通过JDBC API...

    spring4配置hibernate3

    本文将详细探讨如何在Spring 4中配置Hibernate 3,以便实现数据持久化功能。这个压缩包文件“spring4-hibernate3-demo”很可能是包含了一个示例项目的源代码,用于演示这种集成。 首先,我们需要理解Spring 4和...

    hibernate3所需完整jar包

    压缩包内包含antlr-2.7.6.jar、commons-collections-3.1.jar、commons-logging-1.1.3.jar、dom4j-1.6.1.jar、ejb3-persistence.jar、hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、javassist-3.12.0.GA....

    hibernate3 jar包

    Hibernate3是一个流行的对象关系映射(ORM)框架,它允许Java开发者将数据库操作与业务对象进行解耦,简化了数据库应用程序的开发。这个"hibernate3 jar包"包含了所有必要的组件,使得开发者可以在项目中直接引用,...

    hibernate3+ proxool-0.9.1配置 和proxool-0.9.1.jar

    Hibernate3是Hibernate项目的第三个主要版本,它提供了强大的对象关系映射功能,能够将Java对象与数据库表进行映射,从而简化数据库操作。它支持多种数据库,包括MySQL、Oracle、SQL Server等,并且具备事务管理、...

    hibernate3实例包

    标题提及的是“hibernate3实例包”,这表明我们将讨论的是关于Hibernate 3的一个实例集合,Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转换为对对象的操作,从而简化了Java应用...

    Hibernate3所有包和配置文件

    这个压缩包包含的是Hibernate3的所有相关包和配置文件,这对于理解并使用Hibernate3进行数据库交互非常有用。 1. **hibernate3.jar**: 这是Hibernate3的核心库文件,包含了所有的类和接口,如Session, Transaction,...

    Hibernate3jar包

    Hibernate3是其第三个主要版本,发布于2006年,相较于之前的版本,它引入了许多增强功能和改进,使得开发者在处理数据库操作时更加便捷高效。 **核心组件** 1. **Configuration**: 这是初始化Hibernate的类,负责...

    Hibernate3中文文档

    《Hibernate3中文文档》是Java开发领域中一份重要的参考资料,主要涵盖了Hibernate3框架的各种特性和用法。Hibernate作为一款开源的对象关系映射(ORM)框架,极大地简化了Java应用程序对数据库的操作,使得开发者...

    Hibernate3框架系列 [ 1 ]

    Hibernate3是Hibernate框架的第三个主要版本,它在前两个版本的基础上进行了优化和增强,提供了更强大的功能和更好的性能。 【描述】:“Hibernate框架系列 [ 1 ] 配置-》实现CURD;全程笔记记录!” 在这个部分,...

    hibernate3的jar包

    Hibernate3 是一个强大的Java对象关系映射(ORM)框架,它极大地简化了数据库与Java应用程序之间的交互。在Java开发中,Hibernate3 提供了丰富的API和功能,使得开发者可以更加专注于业务逻辑,而不是繁琐的数据访问...

    spring3 hibernate3 整合

    Hibernate3作为其第三个主要版本,包含了对JPA(Java Persistence API)的实现,以及对HQL(Hibernate Query Language)和Criteria查询的优化,增强了性能和易用性。 整合Spring3和Hibernate3,主要是为了利用...

    hibernate3资源包

    **hibernate3资源包** Hibernate 3 是一个流行的开源对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对Java对象的操作,从而简化了数据存取的复杂性。这个资源包包含了用于Hibernate 3开发所需的核心...

Global site tag (gtag.js) - Google Analytics