Hibernate用户手册:2.1 领域模型以及映射类型
来源:互联网 发布:哪个网络播放器最好用 编辑:程序博客网 时间:2024/06/06 08:32
旨在交流学习,不对的地方请指正
domain model
术语domain model源自数据建模的领域。它是一个模型,最终描述了我们处理的问题领域。有时你也会听到术语:持久化类(persistent classes)。
最终,在一个ORM中,应用程序的领域模型是中心角色。他们组成你想要映射的classes。如果这些类遵循了Plain Old Java Object (POJO) 或者 JavaBean 编程模型,hibernate会工作的很好。然而,这些都不是硬性要求。的确,对于持久化类的性质,hibernate做了很少的假设。你可以通过其他的方式表达一个领域模型(比如说,使用java.util.Map的trees)。
以前使用hibernate的程序都会使用特有的XML映射文件格式来达到这个目的。随着JPA的到来,现在绝大多数的这些信息都使用了一种方式来定义,就是方便地通过ORM/JPA 供应器使用annotations(and/or standardized XML format)。这个章节将尽可能地介绍 JPA 映射。对于JPA 不支持的hibernate映射功能,我们将会在Hibernate extension annotations中介绍。
Mapping Types
Hibernate 理解 Java 和 JDBC 程序数据的表现。一个Hibernate type 都能从数据库中读取或写入数据。一个 type 的这种用法是 the org.hibernate.type.Type 接口的一个实现。这个 Hibarnate type 也描述了这个 java type 的行为的各个方面,比方说:如何检查相等,如何克隆值,等等。
附注:type 的用法
Hibernate type 既不是java类型,也不是 SQL 数据类型。它提供了关于两者的信息,并且清楚两者之间的关联。
当你在 Hibernate 的讨论中遇到术语 type 时,它可能指 Java type、JDBC type、或者 Hibernate type,这取决于上下文。
为了帮助理解type的分类,看下面的例子:一个简单的表和它的领域模型
create table Contact ( id integer not null, first varchar(255), last varchar(255), middle varchar(255), notes varchar(255), starred boolean not null, website varchar(255), primary key (id))
@Entity(name = "Contact")public static class Contact { @Id private Integer id; private Name name; private String notes; private URL website; private boolean starred; //Getters and setters are omitted for brevity}@Embeddablepublic class Name { private String first; private String middle; private String last; // getters and setters omitted}
大体上来讲,Hibernate 类型分为两类:
- Value types
- Entity types
Value types
一个值类型是数据一小块,它不能定义自己的生命周期。实际上,它属于一个entity,entity明确了它的生命周期。
看看另一种方式,一个entity所有的状态完全由value types组成。这个状态字段或者JavaBean属性都被称为持久化属性(persistent attributes)。这些通讯类(contact classes )的持久化属性都是value types。
value types 可以进一步分为三种子类型:
Basic types 基本类型
在映射Contact 表中,所有的属性,除了name,都是基本类型。基本类型将会在Basic Types 章节中详细讨论。Embeddable types 嵌入式类型
name属性就是嵌入式类型的一个例子,这将会在Embeddable Types章节中讨论。- Collection types 集合类型
尽管在上述例子中没有涉及到,collection types 在value types 中也是一个独特的种类。Collections types 会在 Collections 章节中讨论。
Entity types
entities,从他们唯一标识符特质来看,都独立于其他对象存在,但是value types 就不同。entities 是领域模型classes,通过一个唯一的标识符(主键)关联到一个数据库中的表的行。因为对于一个唯一标识符的需求,entities独立存在,并明确他们自己的生命周期。Cantact类自身就是一个entity的例子。
- Hibernate用户手册:2.1 领域模型以及映射类型
- hibernate——java类型、hibernate映射类型、以及SQL类型之间的映射关系
- Hibernate之领域模型
- Hibernate领域模型
- Hibernate映射的基本操作 Java类型、Hibernate映射类型以及SQL类型之间的对应关系
- Hibernate映射类型
- Hibernate映射类型
- Hibernate的映射类型
- Hibernate的映射类型
- hibernate之映射类型
- hibernate mysql映射类型
- Hibernate类型映射
- Hibernate 映射类型
- Hibernate类型映射
- hibernate映射list类型
- Hibernate的映射类型
- Hibernate映射类型
- Hibernate映射值类型
- Three.js进阶篇之5
- strchr函数
- 递归的函数
- LeetCode 537. Complex Number Multiplication
- 【Linux】Linux下的find命令
- Hibernate用户手册:2.1 领域模型以及映射类型
- 汉诺塔系列1
- LeetCode-3. Longest Substring Without Repeating Characters
- Ubuntu以root权限运行IDEA
- C++的new与JAVA的new
- 10037---web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 养兔子
- 加载配置文件的四种方式
- 懒加载效果的实现