- 浏览: 260088 次
- 性别:
- 来自: 成都
最新评论
-
xurunchengof:
[url][url][url][img][img][img][ ...
Spring Security 3多用户登录实现之三 验证过滤器 -
Wind_ZhongGang:
yo8237233 写道你这样的话如果上传文件超过了50000 ...
Spring集成Commons fileupload,文件上传 -
yo8237233:
你这样的话如果上传文件超过了50000000就会报异常
Spring集成Commons fileupload,文件上传 -
zhuzhiguosnail:
Wind_ZhongGang 写道lianglaiyang 写 ...
Spring Security 3多用户登录实现一 -
曾老师:
?????
Spring Security 3用户登录实现之十 用户切换
文章列表
来看看通过单表来实现一个树形结构的方式。这里假设有这样一个实体名叫儿子,一个儿子只能有一个父亲,而一个父亲可能有多个儿子,因为父亲本身也是他自身父亲的儿子,所以在这里他们的属性没有什么区别。
一。Son
package com.aaxis.model;
/**
* User: Zhong Gang
*/
public class Son {
private Integer id;
private Integer version;
private String name;
private Son dad;
...
先来看看hibernate-reference.pdf上对persist和save的说明吧
从上面得知persist和save方法都可以对持久化实体进行保存,但它们的作用范围却是有着明显的区别,当你调用persist方法对持久化实体进行保存时,它必须在事务的包裹下,如果脱离事务,那么是不会向数据库发送插入语句的,也就是说当你调用persist方法时,必须首先开启事务,而对于save方法来说不论在事务内外,它都会向数据库发送插入语句,不需要事务的包裹执行。
这里有这样两个持久化实体,person和book,两者有一对多的双向关联关系,来看看我写的一个 ...
有这样两个持久化对象Person和Book,两者是一对多双向关联关系,对Person.hbm.xml的bag元素设置了cascade="all"属性。下面来看看我的测试类以及测试结果来引出我的疑问。
package com.aaxis;
import com.aaxis.model.Book;
import com.aaxis.model.Person;
import junit.framework.TestCase;
import org.hibernate.*;
import org.hibernate.cfg.Configur ...
Hibernate Search是一款集成Apache Lucene的搜索jar包。
一。配置
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
...
对于Hibernate的配置方式,有三种,一种是通过外部的属性文件进行配置,一种是通过外部的xml文件进行配置,还有一种就是通过编程的方式进行配置,但对于编程式配置来说,不便于参数的集中管理与修改,所以这里主要介绍两种外部文件的配置方式。
一。属性文件配置方式
hibernate.connection.url=jdbc:mysql://localhost:3306/couple?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8
h ...
在之前的一个项目中,Team leader说在每一个持久化实体的配置文件中的class元素上加上dynamic-insert="true" dynamic-update="true"可以一定程度上增加与数据库操作相关的速度,当时半信半疑就加上了,也没有自己去进行深入的了解。但最近在练习Hibernate时却发现,事实并非如此,抛开速度上的问题不管,单说加上这两个属性后,这两个属性起作用的时机就大有奥妙。
对于dynamic-insert的理解是当需要进行插入或保存操作的持久化实体时,如果该实体中的某一个属性为NULL,那么在插入语句中 ...
这几天花了点时间写了点关于Hibernate对象关联关系映射的各种处理方式及实例讲解,特别适合初学者,希望大家踊跃批评指正以及拍砖。详情请参见附件中的pdf文件。
资源共享嘛大家该给个回应嘛,呵呵。
Hibernate继承关联关系映射处理之joined-subclass,以这种方式处理继承关联关系映射,会将继承树中的每一个类都在数据库中进行映射,有着各自对应的数据表。与前两种处理方式,除去配置文件的不同之外,其它部分没有区别,如不了解,请参见前文关于subclass的讨论或者本文最后附上的源码。
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hiber ...
Hibernate继承关联关系映射之union-subclass, 以这种方式处理的继承关联关系映射会将每一个具体子类映射为数据库中的一张数据表,而父类则不会有数据表映射。因为除去配置文件的方式不同之外,其他部分没有变化,所以在这里我就只贴出相关配置文件的改动之处,如对代码等有不了解之处,可参见前文,有详细描述,也可以参见我在最后附上的源码。
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC &q ...
Hibernate对于继承的关联关系有三种处理方式,一种是将整个继承树的持久化实体在一张表中进行映射,一种是将继承树中的每一个持久化实体在数据库中为其各自建立一张表来进行映射,一种是将继承树的子类在数据库中为其各自建立一张表来进行映射。在这里先来看第一种方式的配置方式。
一。Person
package com.orm.model;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/19/11
* Time: 6:13 PM
*/
public abstract c ...
对于多对多的关联关系处理,前面我讲解了在数据库中建立第三张表用于维护两者的关联关系,现在我来讲解另一种比较常用且通用的处理方式,那就是将这个多对多的关联关系拆解成两个一对多的关联关系,意取从这个多对多的关联关系中提取出一个中间实体,用来表示两者的多对多关联关系,这个中间实体在数据库中存在相应的数据表映射。
一。Husband
package com.orm.model;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/18 ...
对于多对多的关联关系处理,一种方式是使用连接表来维持两者的多对多关联关系,也就是说除去两者在数据库中相应的数据表外,还会创建第三张表用来维护两者的多对多关联关系。
一。Husband
package com.orm.model;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/18/11
* Time: 3:23 PM
*/
public class Husband extends DomainObject {
...
对于一对多的关联关系方式还有一种比较特殊的做法就是将多方视为一方的组合元素,这样多方并不会在数据库中存在相应的数据表,而是由表征两者一对多关联关系的连接表来存储多方的数据,并且该连接表的主键标识符即是对建立与一方一对多关联关系的外键标识。
一。Husband
package com.orm.model;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/18/11
* Time: 3:23 PM
*/
public ...
对于一对多的关联关系,除去上一单讲的在多方对应的数据表中增加一个外键字段,用来标识一方外,还有一种做法就是将两者的关联关系提取出来,单独建立一个第三方数据表用以维护两者的一对多关联关系。
一。Husband
package com.orm.model;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/18/11
* Time: 3:23 PM
*/
public class Husband extend ...
对于一对多的关联关系,通常的做法就是在多方映射的数据表中增加一个外键字段,用以保持一方的主键标识符,维持一对多的关联关系。
一。Husband
package com.orm.model;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 10/18/11
* Time: 3:23 PM
*/
public class Husband extends DomainObject {
private String ...