Hibernate之OID

在关系数据库中,主键用来识别记录,并保证每天记录的唯一性。在Java语言中,通过比较两个变量所引用对象的内存地址是否相同,或者比较两变量引用的对象是否相等。Hibernate为了解决两者之间的不同,使用对象标识符(OID)来标识对象的唯一性。OID是关系数据库中主键在Java对象模型中的等价物。在运行时,Hibernate根据OID来维持Java对象和数据库中的对应关系。如下所示:
Transaction tx = session.beginTransaction();
User user1 = (User)session.load(User.class,new Long(1));
User user2 = (User)session.load(User.class,new Long(1));
User user3 = (User)session.load(User.class,new Long(3));
应用程序在执行上述代码时,第一次OID为1的对象,从数据库中查找ID为1的记录,然后创建想要的User实例,并把它保存到session的缓存中,最后将该实例的引用赋值给变量user1,第二次加载OID为1的对象时,直接把session缓存中的OID为1的实例的引用赋值给user2,因此user1=user2的结果为true

hibernate的对象标识符(OID)
 可以用<id>元素来设定OID,OID可以定义为short,int,long类型,默认情况下,hibernate生成持久类时,会将OID定义为java包装类型
  用ID元素中的<generator>子元素来设定标识符生成器,例如:
  <id type="long" column="id">
     <generator />
  </id>
  以下是hibernate提供的内置标识符生成器:
  1.increment
  2.identity
  3.sequence
  4.hilo
  5.native
  6.uuid
  7.assigned

时间: 2024-08-25 16:52:46

Hibernate之OID的相关文章

Hibernate快速入门基础部分(一)

简介 学习Java有一段时间了,一直在忙碌着学习,每天大量的新知识和新技术来不及消化,第二天又接着学习.有想法有时会想一下,大部分作为学习者角色完成这段时间的学习.反正最终不忘记自己的初心和学习的意义.好啦~不闲扯了,今天小Hi入门,主要学习持久化对象概述.映射对象标识符.和如何操纵持久化对象 Hibernate简介 1.Hibernate是处于开发中的持久层框架,他是一个ORM映射工具(Object/RelationMapping,对象-关系映射,就是通过将Java对象映射到数据库表,通过操作

Hibernate对象标识符

Hibernate提供的内置标识符生成器 Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键来识别或区分同一个表的不同记录.Hibernate使用OID(对象标识符)来统一两者之间的矛盾,OID是关系数据库中的主键(通常称为代理主健)在Java对象模型中的等价物. 在对象-关系映射文件中,<id>元素用来设置对象标识符,比如:        <id name="id" type="java.lang.Integer"> 

Hibernate核心技术简介

Hibernate核心技术简介 1.Hibernate映射文件开发     Hibernate映射文件就是项目中*.hbm.xml文件,其主要是完成各元素的配置,包括根元素.类元素.定义主键.设置主键生成方法.定义属性以及关联映射.下面一一单独说明: (1)根元素<hibernate-mapping> 映射文件的根元素是<hibernate-mapping>,每一个*.hbm.xml文件都有唯一的一个根元素.该元素包含以下属性:package.schema.catalog.defa

Hibernate学习---第三节:映射配置文件详解

1.映射文件,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 持久化映射文件(将java对象映射到数据库表) default-

粗浅看Struts2和Hibernate框架

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52424578作者:朱培      ID:sdksdk0      邮箱: [email protected] --------------------------

Hibernate提供的内置标识符生成器

Hibernate提供的内置标识符生成器 Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键来识别或区分同一个表的不同记录.Hibernate使用OID(对象标识符)来统一两者之间的矛盾,OID是关系数据库中的主键(通常称为代理主健)在Java对象模型中的等价物. 在对象-关系映射文件中,<id>元素用来设置对象标识符,比如:        <id name="id" type="java.lang.Integer"> 

Hibernate入门精讲

学习Hibernate ,我们首先要知道为什么要学习它?它有什么好处?也就是我们为什么要学习框架技术? 还要知道    什么是Hibernate?    为什么要使用Hibernate?    Hibernate的配置文件的作用是什么?          Hibernate映射文件的作用是什么?     Hibernate持久化对象的状态有哪些? 现在我先上面的问题解决了. 一.我们为什么要学习框架技术? 1.框架技术有哪些? 在Java开发中,我们经常使用Struts.Hibernate和Sp

精通Hibernate——Java的内存地址与Hibernate的内置对象标识符

在Java语言中,判断两个对象引用变量是否相等,有以下两种比较方式: (1)比较两个变量所引用对象的内存地址是否相同,"=="就是比较的内存地址.此外,在Object类中定义的equals(Object o)也是按内存地址来比较的.如果用户自定义的类没有覆盖equals(Object o)方法,也是按照内存地址来比较的.例如,以下代码用new语句共创建了两个Customer对象,,并定义了三个Customer类型的引用变量,c1,c2,c3: Customer c1 = new Cus

02.Hibernate映射基础

前言:Hibernate的核心功能是根据数据库到实体类的映射,自动从数据库绑定数据到实体类.使我们操作实体类(Java对象)就能对数据库进行增.删.查.改,而不用调用JDBC API使数据操作变得简单而不繁琐.本文就主要讲解Hibernate的映射文件的映射机制,但本文讲解的重点在于通过Hibernate如何配置实体类到数据库表的映射,至于数据库表(或实体类)之间的各种关联关系的映射会在后面的文章中讲到. 1.映射配置文件基础(XXX.hbm.xml) 说明:本节只是对Hibernate的映射文