一、hibernate类型系统
hibernate类型系统分为3类:实体、值类型和映射类型
实体:实体类型具有标识符属性的类,可能处于三种周期状态:瞬时、托管,持久化。
值类型:不具有标识符属性,其生命周期完全有自己的实体实例的生命周期决定。
二、映射集合和实体关联
1.值类型的映射关系:set、bag、list和map
(1)Set
@org.hibernate.annotations.CollectionOfElements(targetElement = java.lang.String.class) @JoinTable( name = "ITEM_IMAGE", joinCloumns = @JoinColumn(name = "ITEM_ID")) @Column(name = "FILENAME", nullable =false) private Set<String> images = new HashSet<String>(); ...
在这里集合表ITEM_IMAGE有两个列,一起形成复合主键,这里使用了泛型代码,所有targetElement在这里可以省略。
(2)List
@org.hibernate.annotations.CollectionOfElements @JoinTable( name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "ITEM_ID") ) @org.hibernate.annotations.IndexColumn( name = "POSTION", base = 1 ) @Column private List<String> images = new ArrayList<String>(); ...
(3)Bag
将上面的IndexColumn注解去掉,就会被当做包集合处理。但这样做,可能使客户端认为集合元素的顺序需要保存着,所以最好将List替换为Collection
(4)Map
@org.hibernate.annotations.CollectionOfElements @JoinTable( name ="ITEM_IMAGE", joinColumns =@JoinColumn(name = "ITEM_ID") ) @org.hibernate.annotationsMapKey( columns = @Column(name = "IMAGENAME") ) @Column(name = "FILENAME") private Map<String, String> images = new HashMap<String, String>(); ...
(5)排序集合与有序集合
@org.hibernate.annotations.Collections.CollectionsOfElements @JoinTable( name = "ITEM_IMAGE", joinColumns = @JoinColumn(name ="ITEM_ID") ) @column(name ="FILENAME, nullable = false) @org.hibernate.annotation.sort( type = org.hibernate.annotations.SortType.NATUAL ) private SortedSet<String> images = new TreeSet<String>(); ...
@org.hibernate.annotations.CollectionOfElements @JoinTable( name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "ITEM_ID") ) @Column(name = "FILENAME", nullable = false) @org.hibernate.annotations.OrderBy( clause = "FILENAME asc" ) private Set<String> images = new HashSet<String>(): ...
排序集合指用一个Java比较器在内存中进行排序,而有序集合指用一个 order by 子句 的SQL查询在数据库级中排列。
2.组件集合。
组件类由于没有标识符,所以必须实现equals()和hashCode();可以再组件类上添加@Embeddable来启用注解
@Embedable public class Image{ @org.hibernate.annotations.Parent Item item; @Column(null = false) private String name; .... }
由于集合表中所有的列都为复合组件,所以这些列为not null 很重要,可以再集合表中添加代理主键,来使得某些列可以为空
@org.hibernate.annotations.CollectionsOfElements @JoinTable( name = "ITEM_IMAGE", joinColumns = @Column(name = "ITEM_ID") ) @CollectionId( column = @Column(name = "ITEM_IMAGE_ID"), type = org.hibernate.annotations.Type(type = "long"), generator = "sequence" ) private Collection<Image> image = new ArrayList<Image>(); ...
3.映射父子关系
(1)多对一关联映射
Public class Bid{ ... @ManyToOne(targetEntity = auction.mode.Item.class) @JoinColumn(name ="ITEM_ID", nullable = fasle) private Item item; ... }
@ManyToOne注解的位置有@Id注解的位置决定。
(2)一对多
onetomany表明集合没有包含值类型的实例,而是包含对实体实例的引用。考虑这种情况,同一个外键值有两个不同内存表示方法,eg:
bid.setItem(item); bids.add(bid);
以上代码hibernate会试图执行两个不同的SQL语句,更新同一个外键列,我们可以通过注解指定那一端的变化不与数据库同步。
public class Item{ ... @OneToMany(mappedBy = "item") private set<Bid> bids = new HashSet<Bid>(): ... }
mappedBy属性必须指定目标实体的反向属性,此时只修改bids,不会同步到数据库。
3.级联操作
public class Item{ @OneToMany( cascadeType ={CascadeType.PERSIST, CascadeType.MERGE}, mapedBy = “item” ) private Set<Bid> bids = new HashSet<Bid>(): ... }
对Item进行保存更新操作,同时也会对Bid进行保存更新操作,此外级联操作还有删除,与孤儿删除操作。
相关推荐
【hibernate学习资料大全】 Hibernate 是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。这个压缩包包含了丰富的Hibernate学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
### Hibernate学习知识点详解 #### 1. Hibernate简介与安装配置 **标题:** Hibernate学习 **描述:** Hibernate 学习 Hibernate学习.pdf **标签:** Hibernate 学习 Hibernate学习.pdf **知识点详解:** ####...
《Hibernate学习文档集合》 Hibernate,作为Java领域中的一款强大且广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。本集合包含了三个关键的学习文档,分别关注于Hibernate的操作基础、对象关系映射和...
本篇将基于“学习Hibernate第二天”的主题,结合“源码”和“工具”这两个标签,深入探讨Hibernate的一对一主键关联双向映射,以及如何在实际开发中利用这一特性。 在Java对象关系映射(ORM)框架中,数据模型通常...
标题"Hibernate 中文api 等学习资料"暗示了这是一组针对Hibernate ORM框架的中文学习资源,包括API文档和其他指南,旨在帮助用户更好地理解和使用Hibernate。 描述中的"hibernate orm框架api中文文档,学习资料,...
**Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),...查询的优化,一级缓存,二级缓存,批量查询,注解方式
**hibernate学习资料大合集** 本资料合集涵盖了关于Hibernate的各种学习资源,包括PDF、CHM和Word文档,旨在帮助开发者深入理解和掌握Hibernate这一强大的Java持久化框架。Hibernate作为一个对象关系映射(ORM)...
《Hibernate学习精华》 Hibernate,一个开放源代码的对象关系映射框架,是Java开发者在数据库操作中不可或缺的工具。它简化了Java应用与数据库之间的交互,使得开发人员能够以面向对象的方式来处理数据库操作,极大...
《Hibernate学习文档》 Hibernate是一种广泛应用于Java开发中的对象关系映射(ORM)框架,它的核心价值在于简化了数据库操作,通过将Java对象模型与SQL关系模型进行映射,使得开发者可以使用面向对象的方式来处理...
随着对 Hibernate 的深入学习,你将了解缓存机制、第二级缓存、查询优化、关联映射等高级特性。这将帮助你在实际项目中更好地利用 Hibernate,提高性能并降低复杂性。 总之,学习 Hibernate 从配置数据库连接开始,...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
《Hibernate DOC中文文档》是学习Hibernate框架的重要参考资料,它详细阐述了Hibernate的核心概念、配置、对象关系映射(ORM)以及各种操作技巧。对于初学者和有经验的开发者来说,这份文档都是掌握Hibernate不可或...
在这个"hibernate学习源代码祝你提高"的资料包中,我们可以深入理解 Hibernate 的工作原理和设计模式,这对于初学者提升技能非常有帮助。该资源主要针对 Hibernate 3.x 版本,这是一个广泛使用的版本,包含了丰富的...
#### 二、Hibernate 入门与基本操作 - **环境搭建**: - 需要在项目的 lib 目录下添加所需的库文件,包括 hibernate 和相关依赖(如 JUnit、log4j 等),以及数据库驱动等。 - 将所需 jar 包添加到项目的 build ...
在“hibernate学习资料”中,我们可以看到两个关键文件:“hibernate┐≥╝▄┐¬╖ó2016░µ╫╩┴╧”和“hibernate框架开发2016版资料”。这些文件很可能是针对Hibernate框架的教程或指南,可能包含了2016年时的...