1. 对象关系映射基础
1)当Hibernate的Session在执行save(arg0)、update(arg0)或saveOrUpdate(arg0)方法时,会调用getXXX()方法,当Session在执行get()、load()和find()方法时会调用相应对象的setXXX(arg0)方法。另外,Hibernate可以访问任意权限级别的Hibernate方法,即便他是private类型的。
2. property属性节点的access属性(property、noop和field)
property表示可以通过getXXX、setXXX方法访问
noop仅仅可以通过HQL来获取其值,其他方式均无效
field通过field域来进行访问
说明:如果在映射文件中存在property属性节点,但是在相应的持久化类中没有与之对应的属性,你仍然可以在HQL中访问,但是如果持久化类中的某些属性没有在映射文件中进行映射,那么就不可以通过HQL进行访问。
3. 带有业务属性的字段一般不会用来作为主键(自然主键),因为,当一旦出现允许出现客户重名的业务时,就必须修改数据模型,重新定义表的主键,给数据库的维护增加了难度。因此,更加合理的解决方案是使用代理主键,即不具备业务含义的字段,代理主键一般为整数类型,比字符串类型要节省更多的数据库空间。
4. 用OID(对象标志符)来区分对象,OID是代理主键在Java对象模型中的等价物
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event persistentInstance=(Event)session.load(Event.class,Long.parseLong("27"));
System.out.println(persistentInstance.getTitle());
Hibernate在取出对象时做一个判读,如果OID与缓存中的OID相同,则直接将其引用返回出去而不会进行重复创建。
5. Hibernate的几种内置标帜符生成器
Increment:以递增的方式生成标帜符,步长为1.
Identity:由底层数据库生成标帜符,前提是底层数据库支持自动增长类型,如果数据库是Oracle数据库,则Hibernate会自动创建一个Sequence用来实现自动增长。
Sequence:Hibernate根据底层数据库的序列来生成标帜符,前提是底层数据库支持序列。
Hilo:Hibernate根据hign、low算法来生成标帜符,Hibernate把特定的字段作为hign值,在默认情况下选用Hibernate_unique_key表的next_hi字段
Native:根据底层数据库对自动生成数据库的支持能力来选择identity、sequence和hilo。
Uuid.hex:Hibernate采用128位的UUID(Universal Unique Identification)算法来生成标帜符。UUID能在网络环境中生成唯一的字符串标识符。这种标识符生成策略并不流行,因为字符串类型的主键比整数类型的主键占用更多的数据库空间
Assigned:由Java应用 程序负责生成自然主键,但此时的setId方法不可以设置为private。
6. Increment标识符生成器:
由于Increment生成标识符的机制不依赖于底层数据库,因此适合于所有数据库系统。
适用于只有单个Hibernate进程访问同一个数据库的场合,在集群环境下不推荐使用。
OID必须为long,short,int型,如果将其定义为byte类型,在运行时就会抛出异常。
7. Identity标识符生成器:
要求底层数据库必须支持自动增长字段类型,包括:DB2, MYSQL, MSSQL, SYBASE, HSQLDB, INFORMIX。
OID必须为long,short,int型,如果将其定义为byte类型,在运行时就会抛出异常。
8. Sequence标识符生成器:
<generator class="sequence">
<param name="sequence">HIBERNATE_SEQ_PERSON</param>
</generator>
也可以不明确指出具体使用哪个sequence ,Hibernate在进行初始化时如果碰到没有指定sequence 的对象-映射文件会自动产生一个默认的sequence 。
使用此项的前提是数据库支持sequence ,可以使用的数据库有Oracle,DB2,SAP DB和PostgreSQL。
OID必须为long,short,int型,如果将其定义为byte类型,在运行时就会抛出异常。
9. Hilo标识符生成器
10. Native标识符生成器
分享到:
相关推荐
Hibernate对象关系映射一对多 很基础等文档
标题“Hibernate对象关系映射实例”表明我们将探讨的是使用Hibernate框架进行对象关系映射(ORM)的实际应用。ORM是将数据库表结构映射为Java类对象的一种技术,它使得开发者可以使用面向对象的方式来操作数据库,而...
《精通Hibernate》学习-对象关系映射基础 Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种方便地将数据库操作转换为面向对象的方式。在这个压缩包中,我们很可能会找到关于Hibernate基础...
在Java的持久化框架Hibernate中,关联关系映射是实现对象关系映射(ORM)的重要概念,它允许我们在Java对象和数据库表之间建立链接。本文将深入探讨Hibernate中的一对多、多对一以及多对多映射。 1. 一对多与多对一...
在Java编程语言中,...这涉及到对Java基本类型、复杂类型以及自定义对象的映射,还包括对数据库NULL值的处理、对象关系映射以及工具的使用策略。熟悉这些知识,可以帮助开发者更高效地利用Hibernate进行数据持久化。
Hibernate是Java开发中一个流行的对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,而无需过多关注SQL的细节。"初之"暗示了这是面向初学者的内容,主要会讲解如何配置和使用Hibernate进行简单的...
Hibernate是一个开源的对象关系映射(ORM)框架,用于Java语言开发。它提供了Java应用程序与关系型数据库之间的映射关系,大大简化了数据库编程。Hibernate 4是该框架的一个版本,它涵盖了关系映射、事务处理、原理...
Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转换为面向对象的编程。对象的状态在Hibernate中有三种:transient(瞬态)、persistent(持久化)和detached(脱管)。 1. **瞬态...
Hibernate是一种广泛使用的Java持久化框架,它简化了对象关系映射(Object-Relational Mapping,简称ORM)的过程,使得开发人员可以更加专注于业务逻辑的实现而无需过多关注底层数据库的具体操作细节。在Hibernate中...
在 Hibernate 中,对象关系映射(ORM)是将数据库表映射到 Java 类的过程。这个过程通过 `hibernate.cfg.xml` 配置文件和实体类(Entity Class)来实现。在 `hibernate.cfg.xml` 文件中,我们配置数据库连接参数,如...
### Hibernate集合映射基础 1. **集合类型**:Hibernate支持多种集合类型映射,如Set、List、ArrayList、LinkedList、Map等。Set是最常见的集合映射类型,它不允许重复元素,与数据库中的唯一约束相对应。 2. **...
在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本资源“Hibernate实体映射”提供了一个深入理解这一关键概念的机会,通过...
### Hibernate基础之关联映射与级联操作 #### 第一部分:主键生成策略与对象状态管理 ##### 主键生成策略 在使用Hibernate框架时,合理的主键生成策略能够极大地简化开发工作并提升应用性能。Hibernate提供了多种...
在Java的持久化框架Hibernate中,一对多映射(One-to-Many Mapping)是一种常见的关系映射类型,它反映了数据库中表与表之间的关联关系。本文将深入探讨Hibernate一对多映射的概念、配置以及实现方式,并结合提供的...
在对象关系映射(ORM)框架Hibernate中,对象与数据库表之间的关联是通过一个XML配置文件来定义的。这个XML文件包含了映射元素,用于描述Java类如何转化为数据库中的表。映射文档可以通过自动化工具如XDoclet、...
Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了Java应用中的数据库操作,使得开发者能够更专注于业务逻辑而不是繁琐的SQL代码。 在Java开发中,持久化是将应用程序中的对象状态保存到持久存储介质...
在Java世界里,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,极大地简化了数据访问层的编程。在这个“hibernate中的集合映射范例程序”中,我们将深入探讨...