`
NistCK
  • 浏览: 38527 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Hibernate持久化的实现——实体对象识别

阅读更多

如何判定两个实体对象是否相等?
站在数据库的角度,我们认为在一个库表结构中,主键可以唯一确定一条记录,那么对于拥有同样主键值的实体对象,则认为他们等同。
在持久层之外,对象是否相等也遵循着特定领域中的逻辑规则

  

问题:

TUser user = (TUser)session.load(TUser.class,new Integer); 

TAddress addr1 = new TAddress(); 
addr1.setAddress("Shanghai"); 
TAddress addr2 = new TAddress(); 
addr2.setAddress("Guangdong"); 

user.getAddresses().add(addr1);//addr1.id=null; 
user.getAddresses().add(addr2);//addr2.id=null; 

System.out.println("Items in set : " + user.getAddresses().size()); 

 

主键值生成机制,id只有在Session.save()方法执行之后才会被设置。

 

解决方法:
1、不覆盖equals/hashCode方法的情况下将面临:实体对象的跨Session识别。包含了两个针对同一库表记录的实体,当 Session.save时,将得到一个NonUniqueObjectException异常。只是用一个session实例可避免。
2、实现值比对:只需针对实体类的属性进行处理,而不要设计实体类所关联的集合类的比对,否则在多对多关系中很容易引发一些其它的问题。
3,业务关键信息判定: 值比对的一个子集。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate的高级操作

    #### Hibernate持久化实现 在深入探讨Hibernate的高级特性之前,我们先回顾一下基础概念:Hibernate是一种对象关系映射(Object-Relational Mapping, ORM)框架,它能够将Java对象映射到数据库表,并提供了一系列...

    hibernate反向生成实体类及CRUD操作教学视频

    4. **生成持久化代码**: 反向工程还会生成基于这些实体的Hibernate配置文件(hbm.xml或使用注解的方式),定义了表与类之间的映射关系。 接下来,视频会涵盖CRUD(创建、读取、更新、删除)操作,这是任何数据库...

    hibernate3.6 文档(pdf 格式)

    - **实体**:定义 Hibernate 中的基本映射单位——实体。 - **标识符**:说明如何配置实体的主键生成策略。 - **乐观锁定属性**:配置乐观锁定字段以支持并发控制。 - **属性**:定义实体的属性及其映射。 - **嵌入...

    Middlegen-Hibernate-r5.rar

    在IT行业中,数据库管理和持久化层的设计是至关重要的环节。Middlegen与Hibernate这两个工具,正是为了解决这些问题而生。Middlegen-Hibernate-r5.rar这个压缩包,蕴含了关于这两个工具的最新版本资源,为我们提供了...

    hibernate+状态详解

    当一个瞬时态对象通过Session的save()、saveOrUpdate()或load()方法被持久化后,它就进入了持久态。此时,对象与数据库建立了关联,对象的任何改变都会在Session提交时同步到数据库。在持久态下,如果对象被删除,...

    hibernate课程笔录

    7. **实体状态与生命周期**: Hibernate识别四种实体状态:瞬时、持久化、托管和脱管。理解这些状态以及如何在它们之间转换对于有效使用框架至关重要。 8. **实体监听器**: 可以通过实现Hibernate的事件监听接口,如...

    hibernate-3.4.0

    其中,“hibernate-annotations-3.4.0.CR1”是重要的子模块之一,它是Hibernate注解API的组成部分,允许开发者在实体类上使用注解来定义数据表和字段的映射,从而实现对象模型到数据库模式的映射。 一、Hibernate...

    hibernate_reference3.2.1

    - **第一个类**:介绍了创建第一个Hibernate应用程序所需的最基本元素——定义一个持久化类。 - **映射文件**:阐述如何通过XML映射文件来描述类与数据库表之间的关系。 - **Hibernate配置**:讲解配置文件的设置,...

    JPA开发文档--总结

    JPA简化了数据库操作,通过注解或XML配置,可以轻松实现对象与数据库表的映射。 2. **JPA 体系架构** JPA体系架构主要包含以下组件: - **Persistence Provider**: 提供JPA的具体实现,如Hibernate、EclipseLink...

    武汉理工大学软件设计与体系结构实验报告-图文-2.docx

    - **架构实现**:选择了SSH框架(Struts、Hibernate、Spring)来实现三层架构,各框架负责不同的职责,如Struts处理页面和请求,Hibernate管理数据持久化,Spring协调组件。 实验报告通过这个案例展示了软件设计与...

    JAVA开发的电子宠物的源程序

    在这个电子宠物应用中,Hibernate可能会用于用户数据、宠物数据等的持久化操作,包括CRUD(创建、读取、更新、删除)操作。开发者可以学习到如何创建实体类,编写Hibernate配置文件,以及使用Session进行数据库交互...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

Global site tag (gtag.js) - Google Analytics