心得:
一,hibernate关心的永远只是一个一个属性,而不是数据库当中的表。这也就是为什么inverse属性不放在多一方Item的时候,数据库更新的是Bid所代表的那张表。因为一旦建立了这种联系关系。Item和Bid有联系,在数据库当中,都是维护着Bid当中关于Item的外键。
但是数据库中的表和OO有着一些格格不入。因为OO对象与对象之间的关系是指针。比如书中的例子,一个Item,指向n个Bid。在java的世界里。有多少个Bag和Item。就会产生多少个对象。他们直接互相的指针标示着他们的关系。
但是在数据库中,则是完全另一幅景象。数据库中,对象与对象的关系通过的是通过外键来形成的。代表一个对象的一条记录有着另一个对象的记录的时候,就表示两个对象之间建立了联系。
Hibernate在处理这种关系的时候,往往会把这表示联系的关系外键放在一得一方。one-to-one是联合主键。而many-to-one则是把外键放在了one的一方。这点起初让我很混淆。因为方向也好,真的让我很糊涂。
双向和单向
这个概念可能有点困扰。因为在hibernate中,只要在类当中有着链接。那么一定一个找到另一个。比如说例子中的bid和item,item中的bid是map或者set存放,那么通过item,一定能够找到相应的bid。只是单向的导航只是无法确定或者说必须先获得整体的包含bid的map,然后通过代码进行查找特定的bid。而双向的可以直接找到相应的bid。
所以来说,如果说需要双向导航,在表示两者这件一对多或者多对一的关系的时候,只能使用<idbag>,<list>和<map>这样的标签。因为这些标签使得在多端,会产生一个和一端相关,和多端无关的标识。而set,bag这种标签,则不会有这种东西
<mang-to-one>之类的标签
开始的时候,我对于这些标签和迷惑。不知道其到底有着什么特别的作用。
慢慢的,明白了这只是一个代表着一个类中的属性。和property之类的标签有着一样作用的。表示这个属性对应着何种的值。只是有了这个标签,就告诉了Hibernate。这个属性和其他的属性不一样。不能够单独存在。其和其他类有着特殊的关系。
<many>端的unique
首先,从hibernate来说,其处理的是OR映射框架。而在操作层上面,其关心的只有在类当中的属性。在hibernate内部,只有属性和表中的关系应该是多对多的关系。但是从属性一端来理解hibernate的映射,将会是比较方便的方法。
所以来说,如果many一端设置了unique,就等于把这一端设定成了one端。因为属性对应的字段为唯一,那么一切就好办很多。
<many-to-many>标签
其实这个标签和上面的标签没什么本质上很大的区别。也是一种映射的表示。
至于中间件的处理,如果简单点,就是一个类的映射。当然复杂一点,就要深入讨论了。这里就不展开了。
继承
这里的继承的与前面不同的是外部调用多态的实现。很简单,就好像组件的组装了。
当然有一点复杂,但是书上也说了。这个复杂的东西被用的概率很少很少。所以我就知道,解决这些问题是通过一个叫做<any>的标签。
分享到:
相关推荐
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...
传智播客 汤阳光 Hibernate 学习笔记,非常详细的hibernate学习资料!
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
Java相关课程系列笔记之十四Hibernate学习笔记
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...