`
学会做人
  • 浏览: 121176 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate的对象--关系映射(2)

阅读更多

对象与映射关系总结2

 

 

 

一:一对一的关系

 

步骤:1、建立Hibernate-cfg.xml文件

            2、建立一对一对象Customer和CardID

            在建立对象Customer 和CardID时

          A.Customer类里要把CardID对象组合进来,并且不能初始化!

                  否则会报java.lang.StackOverflowError的异常

     (为什么要报此错,并不理解!)

 

    B.CardID类里面要把Customer组合进来,在此类里,无论初不初始化,都不会报异常!

 

      3、在数据库中建立对应的表

 

      4、建立Customer.hbm.xml对象和关系映射文件

             A、在此映射文件里generator主键生成器要设为assigned(主键由外部程序生成,无需hibernate参与)

              B、在<one-to-one> 里面cascade(级联)要设置成all

       5、建立CardID.hbm.xml

         A、在此映射文件里generator主键生成器要设为foreign(使用外部表的字段作为主键。)

           并且要在此标签里加上<param name="property">customer(Customer类指定的引用的属性)</param>标签

 

       6、建立OneToOneService(业务操作类)

 

二:多对一的关系

 

   步骤:1、建立Hibernate-cfg.xml文件

                  2、建立多对一对象Customer和Order

                  3、建立数据库中的表

 

        在 Order类里面把Customer类组合进来,Customer类可以初始化,也可以不初始化

(具体原因就是:不是很清楚)

         

         4、建立Order.hbm.xml对象与关系映射文件

       

        A、在此映射文件里generator主键生成器要设为assigned(主键由外部程序生成,无需hibernate参与)

        B、并且在此文件里的<many-to-one>的标签中最好是不要设置cascade

    但要设置column="外键"

        

  (因为多对一的关系,多方的多条记录可能对于一方的一条记录,所以插入、更新、删除等操作时,不需要级联操作

 

         5、建立业务操作类

 

 

 

 

三、一对多的关系

      步骤:1、建立Hibernate-cfg.xml文件

                  2、建立多对一对象PublishHouse和Book

                             在PublishHouse中利用set集合讲Book组合进来

         3、建立对象与关系映射文件

 

         4、   建立数据库中的表

                       A. 在多的一方Book.hbm.xml中配置很简单

                         只有id(id中有generator)property

                     B.在一的那方必须配置

                <set name="bookSet" table="t_book" cascade="all">

        <key column="PID"></key>

        <one-to-many class="com.lovo.hibernate.OneToMany.Book"/>

     </set>

            

         5、建立业务操作类

 

四、多对多的关系

 

           用两个一对多的关系配置就可以得到!

但最重要的是cascade inverse的配置                             

     

 

 

总结

 

一、

get load

 

Aget

1、在一级缓存中找Book 的代理Proxy

2、如果找不到就到数据库中去找

3、若数据中没有数据则返回null(这个与一级缓存无关)

4、如果数据库中有数据在一级缓存中就会创建代理对象

(是填充了数据的代理)

 

 

B、load

1、如果在一级缓存中找,如果找到了就什么都不做了

2、如果找不到的话就创建代理并且设置OID(与数据库无关,只跟一级缓存有关)

3、无论是对代理对象的任何方法,都会触发查找数据库(例如在代理中调用tostring)

 

(注意是否到二级缓存去找,根据配置来定,二级缓存没有空的代理

二、cascadeinverse

 

1、cascade是级联、就是插入,修改,删除等操作会不会影响另外一个

Cascade属性的可能值有

    all:
所有情况下均进行关联操作,即save-updatedelete

    none:
所有情况下均不进行关联操作。这是默认值。

    save-update:
在执行save/update/saveOrUpdate时进行关联操作。

    delete:
在执行delete 时进行关联操作。


    all-delete-orphan:
当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。


 

2、inverse

很难理解,反正一边true,一边就要设置成false,

具体的理解,我在另外的一章总结中做了详细的总结!

分享到:
评论
1 楼 orsen 2009-08-18  
老哥写的不错,,希望能在能详细 在能深入点。

相关推荐

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`是Hibernate 3.0版本中的两个核心文件,它们定义了...

    hibernate5--3.映射关系

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库。本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)...

    Hibernate one-to-many / many-to-one关系映射

    在开发过程中,IDE如Eclipse或IntelliJ IDEA提供了对Hibernate的集成支持,包括代码生成、对象关系图显示以及自动配置检查,这使得关系映射的设置更加直观和便捷。 六、最佳实践 1. 选择合适的集合类型:根据业务...

    Hibernate对象关系映射

    Hibernate对象关系映射一对多 很基础等文档

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605.zip

    在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而Eclipse作为主流的Java集成开发环境,其丰富的插件生态使得开发效率得以提升。"hibernatetools-Update-4.1.1.Final_...

    对象-关系映射—Hibernate 培训 (中文)

    对象-关系映射—Hibernate 培训 (中文) 目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳...

    HibernateTools-3.2.4

    在HibernateTools 3.2.4版本中,它包含了一系列的特性与插件,以支持更便捷地进行对象关系映射(ORM)管理和数据库交互。 一、Hibernate Tools的主要功能: 1. **逆向工程(Reverse Engineering)**:能够从现有的...

    hibernate-release-5.2.10

    Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605

    Hibernate Tools是开发者在使用Hibernate框架进行Java应用程序开发时的重要辅助工具,它为Eclipse IDE提供了强大的集成支持,包括对象关系映射(ORM)的可视化设计、逆向工程、数据库生成、HQL和SQL查询编辑等功能。...

    hibernate many-to-many级联保存,级联更新,级联删除

    如果修改了Student或Course对象的关联关系,然后调用`session.update(student)`或`session.update(course)`,Hibernate会自动更新关联表中的记录,以反映新的关系状态。 六、级联删除 当调用`session.delete...

    hibernate-commons-annotations-5.0.1.Final.jar

    总结,`hibernate-commons-annotations-5.0.1.Final.jar`是Hibernate框架的重要组成部分,通过提供丰富的元数据注解,简化了Java对象与数据库之间的映射工作。对它的源码进行深入学习,不仅能够增强对JPA和Hibernate...

    HibernateTools-3.2.4.Beta1-R200810311334.zip

    《HibernateTools 3.2.4 Beta1:高效数据库管理和对象关系映射工具》 HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作...

    Hibernate稳定版(hibernate-release-5.3.23.Final.zip)

    Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。

    hibernate3.5.0-final下载链接

    Hibernate 是一个开源的对象关系映射(Object Relational Mapping,ORM)框架,它允许开发者将 Java 对象映射到数据库表,并支持多种数据库管理系统(Database Management Systems,DBMS)。Hibernate 3.5.0-Final ...

    hibernate-release-5.0.7.Final的所有jar包

    Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个`hibernate-release-5.0.7.Final`版本中,包含了所有相关的jar包,为开发者...

    HIBERNATE - 符合Java习惯的关系数据库持久化

    Hibernate是Java领域内最受欢迎的对象关系映射(ORM)框架之一,它简化了Java应用程序与关系型数据库之间的交互,使得开发人员能够用面向对象的方式处理数据库操作,而无需深入了解SQL语法或数据库API。通过将Java...

    hibernate-extensions和Middlegen-Hibernate

    在Java的持久化层开发中,Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,手动编写实体类和映射文件(hbm.xml)的过程仍需消耗大量时间。为了解决这一问题,两个工具——hibernate...

    Hibernate ORM - 继承关联关系之union-subclass

    在Java世界中,ORM(Object-Relational Mapping)框架如Hibernate是将数据库关系模型与对象模型之间进行映射的关键工具,极大地简化了数据库操作。本文将深入探讨Hibernate ORM中的一个特定概念——继承关联关系的...

    hibernate-release-5.3.2.Final

    Hibernate ORM,作为Java领域最著名的对象关系映射框架之一,自诞生以来就深受开发者喜爱。2018年7月5日,Hibernate发布了其最新版本——5.3.2.Final,带来了诸多改进和新特性,为开发者提供了更为高效、稳定的持久...

Global site tag (gtag.js) - Google Analytics