1. 1. Hibernate通过@Id指定主键来表示实体的同一性,@Id注解的位置,决定了对实体使用字段访问(持久化引擎直接访问)还是属性访问(通过获取方法与设置方法访问)。
持久化的类。
2. 当一个表的列较多时可以启用动态语句,避免hibernate在省城SQL语句时更新所有列。可以通过以下方式实现:
@org.hibernate.annotations.Entity(dynamicInsert =true, dynamicUpdate = true)
4. hibernate使用衍生属性:该属性没有列属性,不会出现在SQL的INSERT或者UPDATE中
Public BigDecima getTatalIncludingTax(){
}
5.hibernate生成的属性值
@Column(updateable =false,insertable = fasle)
Private Date lastModified;
默认的属性值
需要启用动态的插入与更新
6.hibernate映射组件
需要在被嵌入的类上添加@Embeddable注解
二、 继承与定制类型
(1) 每个带有隐式多态的具体类一张表
Hibernate默认情况下,基类的属性被忽略并且不是持久化的,需要在具体的子类中注解超类来启用属性的嵌入。
@MappedSuperClass public abstract class BillingDetails{ @Column(name ="OWNER", nullable = flase private String owner; .... } //具体的子类 @Entity @AttributeOverride(name = "owner", column = @Column(nmae ="CC_OWNER", nullable = flase) public class CreditCard extends BillingDetails{ @Id private Long id = null; .... }
(2) 每个带有联合的具体类一张表
与(一)对应的表结构类似,此时超类的数据库标识符被该层所有的具体类公用,此时需要把主键移到超类中去,同时从子类中移除
@Entity @Inheritance(stategy = InheritanceType.TABLE_PER_CLASS) public abstract class BillingDetaisl{ @Id@GeneratedValue @Column Private Lang id =null ... } //子类中则不需要包含主键 @Entity @Table(name ="CREDIT_CARD") public class CreditCard extends BillingDetails{ @Column private String number; .. }
(3) 每个类层次结构一张表
这种情况下超类与子类在同一张表中,由特定行表示具体的子类。
这种映射策略比较简单,也是表示多态的最佳方法,但是所有的子类属性必须声明为可以为空。
@Entity @Inheritance(strategy = InheritaceType.SINGLE_TABLE) @DiscriminatorColumn(name = "BILLING_DETAILS_TYPE, discirminatorType = DiscriminatorType.STRING) public abstract class BillingDetails{ @Id@GeneratedValue @Column private Long id = null; ... } @Entity @DiscriminatorVlaue("CC) public class CreditCard extends BillingDetails{ @Column(name = "CC_NUMBER") private String number; ... }
(4) 每个子类一张表
这种情况将超类的属性(子类的共享属性)单独映射到一张表,同时每个子类的不同属性,各自的映射一张表。
@Entity @Inheritance(strategy = InheritanceType.JOINED) public abstract class BillingDetails{ @Id@GeneratedValue @Column(name = "BILLING_DETAILS_ID) private Long id = null; ... } //子类可以指定主键的列明,不指定则直接舒勇超类的主键列作为其外键列 @Entity @PrimaryKeyJoinColumn(name = "CREDIT_CARD_ID") public class CreditCard extends BillingDetails{ .... }
(5) 混合继承策略
也就是可以针对特定子类指定单独的继承策略
//父类继承策略中选取了SINGLE_TABLE,但仍然可以使某个子类单独映射表 @Entity @DiscriminatorValue("CC") @SecodaryTable(name ="CREDIT_CARD", pkJoinColumns = @PrimaryKeyJoinColumn(name = "CREDIT_CARD_ID") ) public class CreditCard extends BillingDetails{ @Column(table = "CREDIT_CARD", name ="CC_NUMBER", nuable = false) private String number; ... }
相关推荐
这篇博客"Hibernate学习一--注解方式自动建表"主要探讨了如何使用Hibernate的注解来实现数据库表的自动化创建。 在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被...
本篇文章将探讨“Hibernate学习一:简单应用1配置文件版”,主要涵盖如何配置Hibernate,创建实体类,以及进行基本的CRUD操作。 首先,我们来了解Hibernate的核心配置文件——`hibernate.cfg.xml`。这个文件包含了...
这个压缩包包含了丰富的Hibernate学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的工具。 1. **对象关系映射(ORM)基础**: Hibernate 提供了一种将Java对象模型与关系数据库之间的映射机制,使得开发者...
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中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
**Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。
标题"Hibernate 中文api 等学习资料"暗示了这是一组针对Hibernate ORM框架的中文学习资源,包括API文档和其他指南,旨在帮助用户更好地理解和使用Hibernate。 描述中的"hibernate orm框架api中文文档,学习资料,...
**hibernate学习资料大合集** 本资料合集涵盖了关于Hibernate的各种学习资源,包括PDF、CHM和Word文档,旨在帮助开发者深入理解和掌握Hibernate这一强大的Java持久化框架。Hibernate作为一个对象关系映射(ORM)...
《Hibernate学习精华》 Hibernate,一个开放源代码的对象关系映射框架,是Java开发者在数据库操作中不可或缺的工具。它简化了Java应用与数据库之间的交互,使得开发人员能够以面向对象的方式来处理数据库操作,极大...
【北大青鸟Hibernate学习资料】 Hibernate是一个开源的Java ORM(对象关系映射)框架,它为开发者提供了在Java应用中管理关系数据库数据的便捷方式。本学习资料集合了多个关于Hibernate的重要主题,包括对象关系...
《Hibernate学习文档》 Hibernate是一种广泛应用于Java开发中的对象关系映射(ORM)框架,它的核心价值在于简化了数据库操作,通过将Java对象模型与SQL关系模型进行映射,使得开发者可以使用面向对象的方式来处理...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,而无需直接编写 SQL 查询。对于初学者来说,学习 Hibernate 可以简化数据库操作,提高开发效率。以下是对 Hibernate 学习...
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
Hibernate一对一数据关联 Hibernate下的多对多关系 Hibernate关系映射 Hibernate继承关系映射 Hibernate映射类型-主键生成器-核心API Hibernate3 插件Eclipse配置
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...