在关系数据库表中,主键用来识别记录,并保证每天记录的唯一性。在Java语言中,通过比较两个变量所引用对象的内存地址是否相同,或者比较两百变量引用的对象之是否相同来判断两对象是否相等。Hibernate为了解决二者之间的不同,使用对象标识符(OID)来标识对象的唯一性。OID是关系数据库中主键在Java对象模型中的等价物。在运行时,hibernate根据OID来维持Java对象和数据库表中的对应关系。如下代码所示:
-
Transactiontx=session.beginTransaction();
-
Useruser1=(User)session.load(User.class,newLong(1));
-
Useruser2=(User)session.load(User.class,newLong(1));
-
Useruser3=(User)session.load(User.class,newLong(3));
应用程序在执行上述代码时,第一次假装OID为1的user对象,从数据库中查找ID为1的记录,然后创建想要的User实例,并把它保存的session缓存中,最后将该实例的引用赋值给变量user1,第二次加载OID为1的对象是,直接把session缓存中OID为1的实例的引用赋值给变量user2,因此,表达式user1=user2的结果为TRUE。
转自:http://blog.csdn.net/sanmaofly/article/details/5863273
分享到:
相关推荐
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一\二级缓存、...
而Hibernate仅仅是把与当前持久对象关联的对象的OID存放到缓存中。 如果希望把整个关联的对象的所有数据都存入缓存, 则要在相应关联的对象的映射文件中配置元素 --> </hibernate-mapping>
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
Hibernate开发过程(单一映射体) 1创建持久类XXXX.java(要有oid字段:唯一且不具有业务含义;所有属性都有getter/setter方法;空的构造方法;不含oid的构造方法) 2创建映射文件XXXX.hbm.xml(包,类,id,字段) 3...
6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo...
Hibernate允许把OID定义为short,int,long以及他们的包装类型。
Oracleꪰw create table t_ad (oid number(15) primary key, ACTNO varchar(20) not null unique,BALANCE number(20)); UÏ=w ü³%!g POJO---- POJO 1Hibernate ³äøõñ.uQ°n@R!Domain Object (T%ä]...
a) 不在一级缓存之中 b) 数据库可能有记录和它对应,也可能没有记录和它对应 c) 从一个持久态对象转化过来的,从session的一级缓存中出来的,因为调用了session的一些方法,产生了这种对象(session.close()) ...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo...
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一二级缓存、...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
OID检索:根据唯一标识OID检索数据 对象导航检索:根据某个对象导航查询与该对象关联的对象数据 HQL检索:通过query接口对象查询 QBC检索:通过criteria接口对象查询 SQL检索:通过SQL语句查询 2、HQL检索...
介绍了依赖注入,AOP,让你轻松上手
展望未来,先前处于Hibernate状态的维护者将在GSoC 2020期间支持未来的主要维护者 。 她的计划超出了夏季计划的范围,并且旨在共同复兴Celluloid的社区和代码库。 支持这一过程的是和GSoC校友 。 我们欢迎您在这项...
②OID检索? ③HQL检索? ④QBC检索? ⑤本地SQL检索 2. Forward与Global-Forward的区别 答:Forward是根据Action return的值找到对应的JSP页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-...
5. Java语言中,方法的重写...8.以下哪些不是Hibernate的检索方式: A、导航对象图检索 B、OID检索 C、ORM检索 D、QBC检索 E、本地SQL检索 F、HQL检索 答案:C 9.以下代码定义了一个变量,如何输出这个变量的值?
3.hibernate的配置文件(hibernate.cfg.xml)得存在 4.POJO.hbm.xml文件存在 5.hibernate的jar包以及数据库的驱动包存在 Hibernate的编程: 1.构建Configuration对象读取配置文件 2.读取映射文件 3.构建SessionFactory...