Hibernate
DreamZhong
这个作者很懒,什么都没留下…
展开
-
Hibernate one-to-many cascade探究
对于Hibernate的one-to-many关联关系中,合理使用cascade属性能够显著减少代码量,减轻程序员的工作量。 一。Husband package com.hibernate;import java.util.Set;/** * Created by IntelliJ IDEA. * User: Zhong Gang * Date:...2011-09-08 13:20:06 · 224 阅读 · 0 评论 -
Hibernate many-to-many
对于持久化实体间多对多的关联关系,在数据库中的反映和处理即是对两个实体分别定义一张表,然后再定义第三张表用于保存两张表的主键,并且维护这两者间的联系,这样就在数据库层面建立起了持久化实体间多对多的关联关系,而进一步反映到Hibernate持久化实体对象方面就有了两种做法,第一种就是定义两个实体对应数据库中的两张表,并且再定义一个中间实体对应数据库中的第三张表,用于维护两个实体间的多对多...2011-07-30 17:20:24 · 141 阅读 · 0 评论 -
Hibernate ORM Inheritance
Hibernate ORM提供了三种继承映射策略。第一种是父类和子类由一张表来表示,第二种则是具有继承关系的每个类各由一张表表示,第三种是所有具体类,即是子类各由一张表表示,而父类在数据库中则没有表对应。假设有这样几个持久化实体:父类A,它有两个子类,分别为B和C。那么按照第一种策略,A,B,C所有类的持久化信息都是在数据库中的一张表存储的,而按照第二种策略,A,B,C各个类在数据库中都有自己...2011-07-31 22:56:04 · 104 阅读 · 0 评论 -
dynamic-insert,dynamic-update 我有话要说
在之前的一个项目中,Team leader说在每一个持久化实体的配置文件中的class元素上加上dynamic-insert="true" dynamic-update="true"可以一定程度上增加与数据库操作相关的速度,当时半信半疑就加上了,也没有自己去进行深入的了解。但最近在练习Hibernate时却发现,事实并非如此,抛开速度上的问题不管,单说加上这两个属性后,这两个属性起作用的...2011-10-21 17:39:49 · 237 阅读 · 0 评论 -
Hibernate的三种配置方式
对于Hibernate的配置方式,有三种,一种是通过外部的属性文件进行配置,一种是通过外部的xml文件进行配置,还有一种就是通过编程的方式进行配置,但对于编程式配置来说,不便于参数的集中管理与修改,所以这里主要介绍两种外部文件的配置方式。 一。属性文件配置方式 hibernate.connection.url=jdbc:mysql://localhost:3...2011-10-24 16:58:15 · 191 阅读 · 0 评论 -
Hibernate ORM one-to-one主键关联关系映射
Hibernate ORM one-to-one映射主要有两种,第一种是一对一外键关联关系映射,即其中的一方的主键作为另一方的外键,另一方的表中不仅有一个主键字段,还有另一个外键字段用来指向一方;第二种就是一对一主键关联关系映射,即其中的一方的主键也是另一方的主键,两者的主键字段保持一致。那么在配置方式上应该如何实现呢? 一。Husband.java package com...2011-08-01 22:08:11 · 212 阅读 · 0 评论 -
Hibernate Search配置及简单应用
Hibernate Search是一款集成Apache Lucene的搜索jar包。 一。配置 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId...2011-10-25 16:06:32 · 209 阅读 · 0 评论 -
Hibernate save persist merge探究
先来看看hibernate-reference.pdf上对persist和save的说明吧 从上面得知persist和save方法都可以对持久化实体进行保存,但它们的作用范围却是有着明显的区别,当你调用persist方法对持久化实体进行保存时,它必须在事务的包裹下,如果脱离事务,那么是不会向数据库发送插入语句的,也就是说当你调用persist方法时,必须首先开启...2011-10-27 17:59:29 · 166 阅读 · 0 评论 -
Hibernate inverse 深度解析
inverse 英文意思为反向,倒转的。 Hibernate配置文件中的inverse正是这一意思的真实反映,inverse属性只在Hibernate配置文件的集合元素上存在,如bag,list,map,set等。inverse有两个值,分别为true和false,如果inverse=false,表明控制权在一对多关联关系的一方;如果inverse=true,表明控制权在一对多关联...2011-08-09 22:55:29 · 141 阅读 · 0 评论 -
Hibernate 单表实现树结构
来看看通过单表来实现一个树形结构的方式。这里假设有这样一个实体名叫儿子,一个儿子只能有一个父亲,而一个父亲可能有多个儿子,因为父亲本身也是他自身父亲的儿子,所以在这里他们的属性没有什么区别。 一。Sonpackage com.aaxis.model;/** * User: Zhong Gang */public class Son { pri...2011-11-13 21:10:11 · 281 阅读 · 0 评论 -
Hibernate element使用
一.Person package com.aaxis.model;import java.util.List;/** * User: Zhong Gang */public class Person { private Integer id; private Integer version; private Stri...2011-11-20 20:43:44 · 322 阅读 · 0 评论 -
Hibernate cascade在不同关联关系中的具体表现
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当前实体时,针对当前实体的操作会影响到相应配置的关联实体。比如针对当前实体进行保存操作时,会同时保存与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了Cascade属性。而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作...2011-11-22 21:47:30 · 132 阅读 · 0 评论 -
Hibernate one-to-many composite-element实现
Hibernate中持久化实体间一对多关联关系的composite-element的实现方式。 一。DomainObject package com.dream.model.couple;/** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 10/17/11 * Time: 1:05 P...2011-10-17 16:55:03 · 176 阅读 · 0 评论 -
基于DomainObject的通用数据库CRUD操作
对于项目中的持久化实体,持久化实体虽然对应着不同的业务对象,拥有不同的属性,在数据库中有不同的数据表与其对应,但是这些不同的持久化实体间却存在着一些共性,如它们都需要id主键标识数据表中的某一条记录,都有可能需要对其进行增删改查的操作,于是,将其共性提取出来进行封装,对于提高代码的可重用性和可读性,显得十分迫切以及必要。 一。DomainObject package com...2011-10-17 15:09:24 · 211 阅读 · 0 评论 -
Hibernate 关联关系解除
Hibernate对于持久化实体间的关联关系解除,有两种实现方式,一种是将关联关系实体中彻底删除,而另一种则是将关联关系的外键值设为空,即NULL。两种方式在配置文件中的体现为为cascade设置不同的值。 一。Husband package com.dream.model.join;import java.util.Set;/** * Cr...2011-09-27 13:46:35 · 453 阅读 · 0 评论 -
Hibernate fetch 抓取策略
Hibernate fetch抓取策略定义了当抓取关联对象时,以怎样的一种方式进行抓取。当抓取策略为join时,抓取关联对象是通过连接表来抓取的,只会发送一条sql语句,即可完成主对象与关联对象的抓取,而当抓取策略为select时,抓取关联对象则会发送两条sql语句来完成关联对象的抓取,一条是抓取主对象,而另一条则是抓取关联对象。抓取策略通常会与延迟加载策略合并使用,这是因为当采用延...2011-09-27 18:20:57 · 125 阅读 · 0 评论 -
Spring+Hibernate项目配置
配置一个以Spring+Hibernate为框架的项目。 首先来看看我的环境配置吧,如下图 下面是我的pom文件 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3...2011-07-19 22:29:47 · 116 阅读 · 0 评论 -
Hibernate ORM One to One
讨论下Hibernate中的一对一映射。 首先来了解一下一对一的单向关联映射,以Person与IDCard为例,一个人只能拥一张身份证,而一张身份证只能属于一个人,并且从Person的角度讲,需要知道拥有的是哪张IDCard,而从IDCard来讲,则没有这方面的需求。当然需求也不是死的,这里也只是举例而已,不必较真。 1.Person.java package com...2011-07-20 20:48:10 · 91 阅读 · 0 评论 -
Hibernate ORM One to Many
讨论一下Hibernate中对象的一对多或多对一关联关系。这里以日志与日志评论来说明这样的关系,一个日志可以有多条评论,而一条评论则只能对应一个日志。 说明一对多的双向关联。它的现实意义就是从日志的角度可以得到该日志下的多条评论,而从评论的角度则可以知道它属于某个日志。 1.Diary.java package com.template.model;im...2011-07-20 21:14:29 · 116 阅读 · 0 评论 -
Hibernate ORM Many to Many
探讨下Hibernate中对象间多对多的关联关系。以同学借阅图书为例,一个同学可以借阅多本图书,而一本图书可以被多个同学借阅。 建议对于多对多的关系处理借助中间类,从数据库实现上就是说借助第三张表。当然具体需求具体分析,你也可以采用其他的策略。不过这里重点介绍这种方式。来看看实现吧。 1.Student.java package com.template.model;...2011-07-20 21:54:19 · 123 阅读 · 0 评论 -
Hibernate ORM Component
Hibernate提倡在建模时,进行细粒度的控制。这个抽象的概念可以这样理解,一般在进行Hibernate持久化对象建模时,一个对象对应一个配置文件,在配置文件中的属性都有这样一个对象中的属性对应。试想如果一个对象的属性有十几二十个,那么这个对象显然就会变得很大,尤其是getter和setter方法。这样显然会增加对象的复杂度,使得对象变得难以理解。那这时该怎么办呢。Hibernate为我们提...2011-07-21 20:51:13 · 111 阅读 · 0 评论 -
Hibernate one-to-one 两方双向连接表关联
Hibernate中对于持久化实体间的关联关系有三种分类,第一个是一对一,第二个是一对多,第三个是多对多,对于多对一的关联关系认定为是一对多的反向,所以从实质上看这两者是一样的。而对于关联关系的设置,通常的做法是,对于一对一,将关联关系可以放在两方中的任何一方,而对于一对多,将关联关系放置在多方,由多方来控制一对多的关联关系,而对于多对多,需要将关联关系同时放置在两方,即由两方共同来控制多对多...2011-10-15 17:38:08 · 222 阅读 · 0 评论 -
Hibernate one-to-many 一方单向连接表关联
Hibernate中对于持久化实体间的关联关系有三种分类,第一个是一对一,第二个是一对多,第三个是多对多,对于多对一的关联关系认定为是一对多的反向,所以从实质上看这两者是一样的。而对于关联关系的设置,通常的做法是,对于一对一,将关联关系可以放在两方中的任何一方,而对于一对多,将关联关系放置在多方,由多方来控制一对多的关联关系,而对于多对多,需要将关联关系同时放置在两方,即由两方共同来...2011-10-15 23:17:34 · 180 阅读 · 0 评论 -
Hibernate one-to-many 多方单向连接表关联
Hibernate中持久化实体间一对多关联,具体关联关系为多方,单向,连接表关联。 一。Husband package com.dream.model.couple;import java.util.Set;/** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 1...2011-10-15 23:37:47 · 162 阅读 · 0 评论 -
Hibernate one-to-many 双方双向连接表关联
Hibernate中持久化实体间一对多关联,具体关联关系为多方,单向,连接表关联。 一。Husband package com.dream.model.couple;import java.util.Set;/** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 10/17...2011-10-17 14:24:44 · 152 阅读 · 0 评论 -
Hibernate unique使用
在Hibernate中对于一对一的关联关系配置时,提倡在many-to-one配置元素中配置unique="true",以达到约束该外键只能在数据表中出现一次,从而实现一对一的关联关系配置,但在实践中却发现如果相应的建表语句中如果没有设置相应的唯一性外键,那么即使加上这样的配置也是不起任何作用的。以下是我在实践中进行实验的例子,以一个Student有且仅有一个IDCARD的一对一关...2011-11-28 22:16:45 · 300 阅读 · 0 评论