- 浏览: 1214256 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (434)
- js (20)
- struts2 (77)
- spring (11)
- hibernate (17)
- ssh整合 (9)
- 程序例子 (4)
- 正则表达式 (8)
- JSP (20)
- IDE (15)
- 数据库 (10)
- 工作经验技巧感悟 (21)
- 程序员的幽默 (4)
- windows设置 (4)
- 名词解释 (4)
- 技术入门 (4)
- jFreeChart (16)
- OGNL (5)
- java基础 (46)
- dwr (4)
- portal (1)
- 示例用到的附件 (0)
- 优秀程序员45个习惯 (1)
- webService (1)
- shell (3)
- ibatis (3)
- 开发工具 (1)
- OS (3)
- xmlbean (2)
- design_pattern (0)
- error (1)
- testng (2)
- python (18)
- hadoop (21)
- mapreduce (9)
- Hive (0)
- HBase (0)
- ubuntu (22)
- 多线程 (7)
- 自我改进 (6)
- 设计模式 (1)
- ssh (2)
- ant (4)
- guake (2)
- 云计算 (9)
- hdfs (3)
- 大数据 (1)
- 电信业务 (1)
- maven (2)
- svn (5)
- UML (1)
- 待处理问题 (2)
- log4j (1)
- css (1)
- LevelDb (0)
- thrift (6)
- 辅助工具 (3)
- 算法 (1)
- tornado (0)
- twisted (1)
- jvm (0)
- 图书 (1)
- 其他 (1)
- oracle (2)
- mvn (1)
- 私人信息 (0)
- nio (1)
- zookeeper (1)
- JavaIO (3)
- mongodb (1)
- java-高级 (6)
- spring-深入 (1)
- tomcat (1)
- quartz (1)
- 面试题 (1)
- redis (3)
- EJBCA (0)
- spring-3.0 (1)
- memcache (3)
- 性能检测 (1)
- android (0)
- 开源项目 (1)
- 将博客搬至CSDN (0)
- 架构之路 (1)
最新评论
-
pjwqq:
“子类对象”都拥有了“父类对象的一个实例的引用”我晕,应该是“ ...
java继承--父类属性的存放位置 -
gwgyk:
关于楼主最后的问题,我想可能是这样:InputFormat默认 ...
eclipse 运行hadoop wordcount -
fanjf:
上述7点基本具备,可惜现在因为项目需要,做管理方面工作!
如何判断自己是否具有成为一名优秀程序员的潜质 -
摸爬滚打NO1:
链接已经失效
Eclipse添加JSEclipse 插件(js插件) -
younglibin:
看了以上7条, 自己 也不知道是否能够对上, 感觉没一点都有那 ...
如何判断自己是否具有成为一名优秀程序员的潜质
- one-to-one 元素
属性:
- name:映射类属性的名字
- class:映射的目标类
- cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行更新操作时级联、delete执行删除操作时级联
- constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束 默认值为false
- fetch:设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
- property-ref:设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键
- access:Hibernate访问这个属性的策略 默认值为property
- formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
- lazy:指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
- entity-name:被关联类的实体名
单向1——1关联:
需要在实体中提供setter、getter方法;
事实上单向的1——1和N——1配置非常相似;只需要在many-to-one元素增加 unique="true"属性,用于表示N的一端必须是唯一的即可!(既然N的一端加了唯一性约束那么就成了1——1了!)
A、基于外键的单向1——1关联:
将无连接表的many-to-one元素增加 unique="true"属性,即可完成映射!
eg:
<!-- 用于映射1-1关联实体,指定关联实体类为Address
指定外键列名为addressId,并指定级联全部操作 -->
<many-to-one name="address" cascade="all"
unique="true" class="Address"
column="addressId"/>
B、有连接表的单向1——1关联:
将连接表的many-to-one元素增加 unique="true"属性,即可完成映射!
eg:
<!-- 映射连接表中参照关联实体的外键列 -->
<many-to-one name="address" cascade="all"
unique="true" class="Address"
column="addressId"/>
C、基于主键的单向1——1关联:
eg:
<class name="Person">
<!-- 映射标识属性personid -->
<id name="personid" column="addressid">
<!-- 基于主键关联时,主键生成策略是foreign,
表明根据关联类的主键来生成本表主键 -->
<generator class="foreign">
<!-- 指定引用关联实体的属性名 -->
<param name="property">address</param>
</generator>
</id>
<!-- 用于映射普通属性 -->
<property name="name" type="string"/>
<property name="age" type="int"/>
<!-- 下面映射基于主键的1-1关联 -->
<one-to-one name="address"/>
</class>
双向1——1关联:
需要在两边实体类中增加引用关联实体的属性:
A、 基于外键的双向1——1关联:
基于外键的1——1关联,外键可以存放在任意一端,
- 存放的一端要增加many-to-one元素,并添加unique=”true“,
- 另一端使用one-to-one元素,使用property-ref指定引用关联类的属性;
eg:
Preson.hbm.xml
<!-- one-to-one元素映射关联属性,外键列在对方的表内
person-ref指定引用关联类的属性。
即:在address属性所属的Address类内,
必须有person属性的setter和getter方法 -->
<one-to-one name="address" property-ref="person"/>
Address.hbm.xml
<!-- 使用many-to-one映射1-1关联实体
unique="true"确定为1-1-->
<many-to-one name="person" unique="true"
column="person_id" not-null="true"/>
B、基于主键的双向1——1关联:
主键映射策略,一端的主键生成器必须使用foreign策略,表名根据对方的主键生成策略来生成自己的主键本实体不能拥有自己的主键生成策略;
eg:
Preson.hbm.xml
<!-- one-to-one元素映射关联属性 -->
<one-to-one name="address"/>
Address.hbm.xml
<!-- Address持久化类-->
<class name="Address">
<!-- 映射标识属性addressid -->
<id name="addressid">
<!-- 指定foreign主键生成器策略-->
<generator class="foreign">
<!-- 指定根据主键将根据person属性引用的
关联实体的主键来生成-->
<param name="property">person</param>
</generator>
</id>
<!-- 映射普通属性addressdetail -->
<property name="addressdetail"/>
<!-- 用于映射关联属性 -->
<one-to-one name="person"/>
</class>
C、有连接表的双向1——1关联:
用的比较少,只给出例子:
eg:
Preson.hbm.xml
<!-- 使用join元素强制使用连接表 -->
<join table="person_address" inverse="true">
<!-- 映射连接表中参照本实体主键的外键列 -->
<key column="person_id" unique="true"/>
<!-- 映射1-1关联实体 -->
<many-to-one name="address" class="Address"
unique="true" column="address_id"/>
</join>
Address.hbm.xml
<!-- 使用join元素强制使用连接表 -->
<join table="person_address" optional="true">
<!-- 映射连接表中参照本实体主键的外键列 -->
<key column="address_id" unique="true"/>
<!-- 映射1-1关联实体 -->
<many-to-one name="person" class="Person"
unique="true" column="person_id" />
</join>
发表评论
-
hibernate 无主键 多表连接 更新数据
2009-12-23 15:23 2249今天遇到一个问题: 客户给了我 3张表; 这三张表 分别是从 ... -
hibernate 没有id属性 怎么更新数据
2009-12-23 14:39 4050今天用hibernate 查了几个 ... -
Hibernate的各种保存方式的区别
2009-10-23 10:03 1024hibernate对于对象的保存提供了太多的方法,他们之间有很 ... -
hibernate继承映射
2009-09-05 11:13 1993A、采用subclass元素的继承映射: 采用这种方 ... -
hibernate映射文件one-to-many元素属性
2009-09-04 17:18 3591单向1——N关联关系的持久化类发生了改变,持久化类里需要使用集 ... -
hibernate映射集合属性
2009-09-02 15:43 1508hibernate映射集合属性通 ... -
hibernate中控制Insert 和 Update 语句的映射属性
2009-08-31 09:36 2956控制Insert 和 Update 语句的映射属性<pr ... -
hibernate映射文件many-to-many元素属性
2009-08-31 08:50 2909N-----N column(可选): 这个元素的外键关键字 ... -
hibernate映射文件property 元素属性
2009-08-31 08:49 3202property 元素 name:映射类属性的名字 ... -
hibernate映射文件many-to-one 元素属性
2009-08-31 08:48 3777many-to-one 元素 属性: name ... -
hibernate映射文件set 元素属性
2009-08-31 08:46 1931set 元素 属性: name:映射类属性的名字 ac ... -
hibernate映射文件id元素属性详解
2009-08-31 08:45 1514id 元素 属性: name: ... -
hibernate映射文件一级子元素详解
2009-08-31 08:44 1577子元素: meta:设置类或属性的元数据属性 subsel ... -
hibernate映射文件class元素属性详解
2009-08-31 08:42 1845class元素 属性: name:持久化类的全名 ta ... -
hibernate映射文件一级子元素属性详解
2009-08-31 08:42 860一级子元素: meta:用于设置类或属性的元数据属性 ty ... -
hibernate映射文件根元素属性详解
2009-08-31 08:40 1229根元素hibernate-mapping 属性: sche ...
相关推荐
在XML映射文件中,`Student.hbm.xml`包含了`<many-to-one>`元素,表示学生对象引用了一个班级对象,通过`classesid`列连接。而`Classes.hbm.xml`则使用了`<set>`和`<one-to-many>`元素,表示班级对象包含一个学生...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...
`<one-to-many>`元素指定了子实体的类型。 在C#代码中,`User`类会有一个`Orders`属性,它是`Order`类型的集合: ```csharp public class User { public virtual int Id { get; set; } // ...其他属性... ...
- `<one-to-one>`、`<many-to-one>`、`<one-to-many>`和`<many-to-many>`:分别用于一对一、一对多、多对一和多对多的关系映射,通过`<class>`元素的嵌套和属性如`inverse`、`cascade`等来控制关系的维护方式和级联...
1. **<hibernate-mapping>**:根元素,声明这是Hibernate映射文件。 2. ****:定义一个Java类与数据库表的映射。属性包括`name`(类的全限定名)和`table`(对应的数据库表名)。 3. ****:标识符(主键)映射,每...
### Hibernate映射文件基础结构 映射文件通常以`<!DOCTYPE hibernate-mapping>`开头,引用DTD(文档类型定义),确保文件遵循正确的格式。例如: ```xml <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/...
在Java的持久化框架Hibernate...综上所述,Hibernate中的One-to-Many映射涉及了映射文件的编写、Domain对象的设计、数据库配置以及CRUD操作。理解并熟练掌握这些内容,将有助于你在实际项目中高效地处理多对一的关系。
3. 在对应的映射文件中,使用`<set>`和`<one-to-many>`或`<many-to-one>`元素配置映射关系。 4. 如有必要,可以考虑将多对多关系转换为一对多,以优化性能和操作性。 理解并熟练掌握这些概念和实践,将有助于在使用...
例如,我们可以用`<id>`标签来标识主键,`<property>`标签映射普通字段,而`<one-to-one>`, `<many-to-one>`, `<one-to-many>`, 和 `<many-to-many>`则用于描述关联关系。 进一步,Hibernate提供了注解方式进行映射...
<one-to-many class="com.example.Order"/> ``` 3. **自动创建表:** Hibernate提供了一个非常方便的功能,即可以根据实体类自动创建对应的数据库表。只需在`hibernate.cfg.xml`中设置`hbm2ddl.auto`属性为`...
在Java的持久化框架Hibernate中,"Many-to-One"关系是一种常见的关联映射类型,它表示一个实体(类)可以与多个其他实体实例相关联。在这个主题中,我们将深入探讨Hibernate如何处理这种关系,以及如何在实际编程中...
1. `<hibernate-mapping>`:根元素,定义映射文件的开始,通常会指定一个package属性,表示该文件中实体类所在的Java包。 2. `<class>`:表示一个Java类,包含`name`属性指定类名,`table`属性指定对应的数据库表。 ...
使用 `many-to-one` 元素在子类中定义对父类的引用,同时在父类中使用 `one-to-many` 元素声明子类的集合。外键通常位于子类的表中。例如,一个部门可以有多名员工,部门类可以定义一个 Employee 集合。 3. **多对...
在Java类中,双方都可以拥有对方的引用,而在映射文件中,使用`one-to-one`元素: ```xml <one-to-one name="idCard" class="cn.jjm.hibernate.IdCard" unique="true" cascade="all"/> ``` 这表示`Person`类的`...
在Java的持久化框架Hibernate中,`One-to-Many`映射关系是对象关系映射(ORM)中常见的一种关联类型。它表示一个实体("One"端)与多个其他实体("Many"端)之间的关系。例如,一个学生可以有多个课程,一个老师可以...
`hibernate-mapping`元素是映射文件的根元素,它具有几个重要的属性: 1. `schema`:指定映射的表所在的数据库模式名称。 2. `default-cascade`:默认的级联操作,可以是`none`、`save`或`update`。 3. `auto-import...
例如,一个简单的映射文件可能包含`<class>`元素来指定Java类,`<id>`元素表示主键,`<property>`元素表示普通字段,而`<many-to-one>`或`<one-to-many>`元素则用于定义一对多或多对一的关系。 在实际开发中,理解...
1. **一对一映射 (One-to-One)** 一对一映射表示两个实体类之间存在唯一的关系,就像一个人只能有一个身份证。在 Hibernate 中,这可以通过在两个实体类中添加 `@OneToOne` 注解实现。此外,还可以使用 `@...
在Hibernate中,我们可以利用`@OneToOne`注解或者在XML配置文件中使用`<one-to-one>`元素来实现这种关系的映射。 ### 主键双线关联的实现 在给出的部分内容中,我们可以看到一个具体的示例,展示了如何在Hibernate...