- 浏览: 1230560 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lankk:
lankk 写道事实上,在运行String s1=new St ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
事实上,在运行String s1=new String(&qu ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
同意1楼的说法http://docs.oracle.com/j ...
理解String 及 String.intern() 在实际中的应用 -
raoyutao:
...
jdk 线程池 ThreadPoolExecutor -
hongdanning:
理解了。之前困惑的一些明白了。谢谢分享。
理解String 及 String.intern() 在实际中的应用
------------------------------------------------
hibernate多对一关联映射
关联映射的本质:
将关联关系映射到数据库表,关联关系在对象模型中体现为一个或多个引用
<many-to-one>会在多的一端添加一个外键,指向一的一端,这个外键是由<many-to-one>
中的column属性定义的,如果忽略这个属性,默认外键与实体类的属性一致
注意:如果实体类的名称和属性与sql的关键字重复,必须重新命名
<many-to-one>标签定义示例:
* <many-to-one name="group" column="groupid"/>
理解级联的含义?
对象之间的连锁操作
------------------------------------------
hibernate一对一主键关联映射(单向关联Person---->IdCard)
一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建
具体映射方式:
<class name="com.bjsxt.hibernate.Person" table="t_person">
<id name="id">
<!-- person的主键来源于IdCard,共享IdCard的主键 -->
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<!-- one-to-one标签指示hibernate如何加载其引用对象,默认根据主键加载
constrained="true"表明当前主键上存在一个约束,person的主键作为外键参照了IdCard
-->
<one-to-one name="idCard" constrained="true"/>
</class>
-------------------------------------------------------
hibernate一对一主键关联映射(双向关联Person<---->IdCard)
需要在IdCard中加入<one-to-one>标签指向person,指示hibernate如何加载person
默认根据主键加载
------------------------------------------
hibernate一对一唯一外键关联映射(单向关联Person---->IdCard)
一对一唯一外键关联映射实际上就是多对一关联映射的特例
可以采用<many-to-one>标签,指定多的一端的unique=true,则限制了多的一端的多重性为一
通过这种手段来映射一对一唯一外键关联
----------------------------------------
hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard)
一对一唯一外键双向关联映射,需要在另一端(IdCard),添加<one-to-one>标签,指示hibernate如何
加载其引用对象,默认情况下根据主键加载Person,因为外键关联映射中,因为外键关联映射中两个实体的关系
是通过person中的idCard维护的,所以不能根据person的主键来加载,而是根据person的外键来加载person
对象,如:
<one-to-one name="person" property-ref="idCard"/>
-----------------------------------------------
session.flush测试
session.flush主要做两件事:
* 清理缓存(脏数据对比)
* 执行sql
hibernate中sql的执行顺序:
hibernate按照save(insert)、update和delete顺序提交相关操作
set transaction isolation level read uncommited
-----------------------------------------------080701
hibernate一对多关联映射(单向关联)
这个映射的本质:采用了多对一映射原理
多对一关联映射:在多的一端加入一个外键,指向一的一端,它维护的是多到一的关系
一对多关联映射:在多的一端加入一个外键,指向一的一端,它维护的是一到多的关系
也就是说一对多和多对一映射策略是一致的,只是站的角度不同
一对多关联映射让hibernate在一的一端维护关系存在缺点:
* 会发出多余的update语句,建立班级和学生之间的关系,影响性能
* 如果student表中的classesid设置为非空,将无法保存数据
--------------------
hibernate一对多关联映射(双向关联)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多
的一端来维护关联关系
关于inverse属性:
inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,
默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,
如果设置成inverse为true,则我们只能从多一端来维护关联关系
注意:inverse属性,只影响数据的存储,也就是持久化
inverse和cascade
* inverse是关联关系的控制方向
* cascade操作上的连锁反应
------------------------------
hibernate多对多关联映射(单向关联)
映射方法:
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/>
</set>
-----------------------------------------
hibernate多对多关联映射(双向关联)
映射方法:
<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/>
</set>
table属性值必须和单向关联中的table属性值一致
<key>中column属性值要与单向关联中的<many-to-many>标签中的column属性值一致
在<many-to-many>中的column属性值要与单向关联中<key>标签的column属性值一致
------------------------------------------------------
lazy策略可以应用在:
* <class>标签上,可以取值true/false
* <property>标签上,可以取值true/false,需要类增强工具
* <set><list>集合标签上,可以取值true/false/extra
* <one-to-one>、<many-to-one>单端关联上,可以取值false/proxy/noproxy
lazy的概念:在正真使用的时候发出查询语句加载相应的对象
hibernate支持lazy策略只有在session打开状态下才有效
hibernate类级别的lazy只对普通属性起作用,可以控制什么时候加载这些普通属性
---------------------------------
hibernate在集合上的lazy策略:可以取值true/false/extra
true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其
集合元素的数据
false:取消lazy特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据
extra:一种比较聪明的lazy策略,即调用集合的size等方法的时候,hibernate 并不会去
加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需
要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
<class>标签上配置的lazy不会影响到集合上的lazy特性
-----------------------------------------------
hibernate在单端关联上的lazy策略可以取值:false/proxy/noproxy
false:取消lazy策略,即在加载对象的同时,发出查询语句,加载其关联对象
proxy:这是hibernate对单端关联的默认lazy策略,即只有在调用到其关联对象的方法的时候
才真正发出查询语句查询其对象数据,其关联对象是代理类
no-proxy:这种lazy特性需要对类进行增强,使用no-proxy,其关联对象不是代理类
<class>标签上配置的lazy不会影响到单端关联对象上的lazy特性
发表评论
-
连接池exception GetConnectionTimeoutException get/close not same thread
2015-09-24 14:44 7120环境 hibernate 4.2.0.Final sp ... -
hibernate spring 整合 Annotation SessionFactory java.lang.NoSuchMethodError
2015-03-26 09:40 1194使用Annotation整合Spring2.5和Hiber ... -
hibernate 一对多 排序 set
2011-05-19 11:50 2403一个note对象下面有多个comment 显示的时候希望按c ... -
hibernate 懒加载问题的一个临时解决方案
2011-05-06 11:00 1763hibernate的懒加载问题时常会困扰着我们, 今天发现了h ... -
hql select where in
2010-10-28 19:19 889public List<User> getUser ... -
hibernate sql return scalar 返回值的顺序问题 native sql
2010-06-23 11:22 3455hibernate 里面用sql查询时 在没有return s ... -
hibernate sql 放到 hbm.xml中
2010-06-09 14:25 5750<?xml version="1.0" ... -
hibernate update 不是马上发出
2010-04-22 21:10 1027有时要手动让他立刻发出 -
fix No Hibernate Session bound to thread
2010-04-09 12:34 1091@Transactional @TransactionCon ... -
查看hibernate 实际发出的sql语句
2010-03-18 17:24 2316平常的show_sql=true 最后的参数只能看到一个? ... -
hibernate 映射文件 schema catalog 参数 导致的问题
2010-01-26 14:12 2427<hibernate-mapping> &l ... -
Xdoclet 笔记
2009-12-11 18:46 1375xdoclet2的网址: http://xdoclet. ... -
Hibernate 抓取策略
2009-12-11 18:30 1195hibernate抓取策略(单端代理的批量抓取) 保持< ... -
Hibernate 查询
2009-12-11 18:23 1278在hql中关键字不区分大小写,属性和类名区分大小写 1、简单 ... -
Hibernate 继承 及 锁
2009-12-11 18:20 1203每个类继承树映射成 ... -
hibernate 笔记
2009-12-11 18:14 1187第一个hibernate项目 1、新建一个java项目 2 ... -
hibernate 缓存 笔记
2009-11-02 12:00 1292hibernate一级缓存 一级缓存生命周期很短,它sess ... -
hibernate 缓存 初试
2009-11-02 11:08 1103配置二级缓存 hibernate.cfg.xml < ... -
hibernate 缓存
2009-10-28 09:08 1160缓存可以简单的看成一个 Map ,通过 ...
相关推荐
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...
### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...
在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...
本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...
总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...
本文将深入探讨“Hibernate关联映射中的Many-to-One关系”。 Many-to-One关联是现实世界中常见的关系类型,比如一个学生可以对应多个课程,而一个课程可能被多个学生选修。在数据库中,这通常表现为一对多(One-to-...
hibernate关联映射是Hibernate框架中的一个重要概念,它用于在Java对象模型和数据库表之间建立关系,使得数据操作更加方便。以下将详细介绍各种类型的关联映射: 1. **单向N-1关联(无连接表)** 在这种关联中,一...
在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...
在Java的持久化框架Hibernate中,关联映射是核心特性之一,它允许我们将数据库中的表关系映射到对象之间的关系。本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...