`
wangboak
  • 浏览: 20774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate 和数据库的外键关联

阅读更多
做项目建数据库时,表与表之间的外键约束太多,导致后来数据库操作时经常出错,于是我们决定把数据中的外键都删除,只在业务逻辑上存在引用关系,在数据库中不存在实体的外键。

可是我们的代码都写到一半了呀,domain包下和javaBeandouy都已经写完,从头再来是不可能的。
于是我就将数据库中的外键都在数据库中删除掉,Hibernate的XML文件和javaBean都没有改变,经过不是很完善的测试,发现是可以的。
我想:数据库中的外键在数据库级别保证数据的完整性和一致性,但是Hibernate也在DAO层保证了数据的关联。所以,我将数据库的外键删除,是不影响Hibernate的,但是这样,我想会造成数据库中存在一定冗余的数据,和无效的数据。但是,对于复杂的业务处理,这点数据库牺牲还是有用的。
这样,所有的业务关联是外键约束,都在java代码里处理了,数据库是没有任何外键约束的。

不知道我这样做有没有问题,或者是违反了什么原则,欢迎拍砖。

0
3
分享到:
评论
6 楼 wangboak 2011-09-25  
aa87963014 写道
删除外键和你说的这些有毛关系?无非没有了数据库的数据校验。

其他的该怎么样就怎么样一点关系都没。业务出现问题出现了错误的外键,这个只能自己通过业务来解决而不是靠数据库帮你验证数据。

这样的话,在数据库中不存在外键关联,但是在Hibernate的映射文件中,却存在一对多或多对一的关联关系。那就是说Hibernate的关联关系完全不依赖于数据库的关联关系?
5 楼 tag13346 2011-09-23  
问题在于,日久天长,经过几拨人经手这个系统之后,有多少业务关系可以直接相信,约束是数据安全的最后一道防线,不可轻言放弃
4 楼 aa87963014 2011-09-23  
删除外键和你说的这些有毛关系?无非没有了数据库的数据校验。

其他的该怎么样就怎么样一点关系都没。业务出现问题出现了错误的外键,这个只能自己通过业务来解决而不是靠数据库帮你验证数据。
3 楼 wangboak 2011-09-23  
treemap 写道
没有问题,速度快很多

但是 你必须要明白的是,如果有一些 脏数据 你业务上可以接受

是不是一些无用的数据?本来因为外键关联而需要删除掉的,但是因为数据库中没有外键了,所有这些数据就永远留在了数据库中?这些数据就是脏数据?
2 楼 wangboak 2011-09-23  
如何理解这个脏数据啊?
1 楼 treemap 2011-09-23  
没有问题,速度快很多

但是 你必须要明白的是,如果有一些 脏数据 你业务上可以接受

相关推荐

    Hibernate 一对一关联映射(主键关联VS唯一外键关联)

    总结,主键关联和唯一外键关联都是Hibernate实现一对一映射的有效方式,各有优缺点。开发者应根据具体业务需求和数据模型,选择合适的关联策略。理解并熟练运用这些关联映射,对于提升Java后端开发的效率和代码质量...

    hibernate一对一之唯一外键关联(双向关联)

    本篇主要探讨的是Hibernate中的一对一(OneToOne)关系映射,特别是唯一外键关联(UniDirectional and Bidirectional Association)的情况。我们将深入理解这种关联方式的配置、实现以及它在实际应用中的价值。 1. ...

    hibernate基于主外键的一对多/多对一关联

    总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    Hibernate一对一唯一外键关联映射(双向关联)

    总结,通过上述步骤,我们可以使用Hibernate的`@OneToOne`注解实现一对一唯一外键关联映射,并实现双向关联。在实际项目中,应根据业务需求选择合适的级联操作和关联维护方式,以确保数据的完整性和一致性。

    hibernate一对一唯一外键关联映射(单项关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理数据库中的唯一外键关联时。这种映射方式允许在一个实体类中引用另一个实体类的唯一实例,形成一对一的关系。在...

    Hibernate一对一唯一外键关联映射(单向关联)

    唯一外键关联映射时,外键字段在数据库中设置为主键约束,确保每个值都是唯一的,这样就能保证一对一的关系。 ### 2. 创建实体类 假设我们有两个实体类,`Person` 和 `IdCard`,其中 `Person` 拥有一个 `IdCard` ...

    Hibernate一对一单向外键关联 (联合主键annotation)

    本篇将详细讲解如何使用Hibernate进行一对一单向外键关联,并且该关联涉及到联合主键的注解配置。 首先,一对一关联可以分为两种类型:单向和双向。在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一...

    Hibernate Annotation 基于外键的一对多双向关联

    在Java的持久化框架Hibernate中,注解是用于对象关系映射(ORM)的一种强大工具,它可以将数据库的表结构与Java类直接关联起来。本文将深入探讨如何使用Hibernate注解实现基于外键的一对多双向关联。我们将通过具体...

    hibernate一对一唯一外键关联映射(双向关联)

    了解并掌握Hibernate中的一对一唯一外键关联映射,特别是双向关联,对于进行高效且灵活的数据库操作至关重要。通过使用`@OneToOne`和`@JoinColumn`注解,以及正确配置实体和数据库表,可以轻松实现这种关系。在实际...

    Hibernate 多数据库支持解决方案

    1. **去掉数据库级的外键关联** - 在多数据库环境中,由于不同数据库对外键约束的支持和实现方式不同,为保持兼容性,通常建议在应用层而不是数据库层实现关联。这可以通过在实体类中使用Hibernate的`@ManyToOne`, ...

    Hibernate ORM - 一对一外键关联关系

    综上所述,"Hibernate ORM - 一对一外键关联关系"是一个关于如何在Hibernate中设置和管理一对一关系的专题,涉及源码配置、工具使用和性能优化等多个方面。通过阅读相关的博客文章和实践压缩包中的示例,开发者可以...

    Hibernate Annotation 唯一外键一对一双向关联

    在Java的持久化框架Hibernate中,`@OneToOne`注解用于表示一对一的关联关系,而唯一外键一对一双向关联则是这种关系的一种具体实现方式。这篇文章将深入探讨这一概念,帮助你理解如何在实际开发中应用。 首先,我们...

    hibernate中的外键查询实现

    在Java的持久化框架Hibernate中,外键查询是连接数据库表之间关系的一种重要方式,它使得我们可以方便地处理对象间的关联。在这个场景中,我们关注的是"多对一"的关系,即在一个表(br_basic)中有对另一个表(city_...

    Hibernate Annotation 基于外键的单向多对一关联

    本篇文章将深入探讨如何使用Hibernate Annotation来实现基于外键的单向多对一关联。 在关系型数据库中,多对一关联是一种常见的关系类型,意味着一个实体(如表)可以与另一个实体有多条记录关联,而另一个实体只能...

    Hibernate教程05_关系映射之一对一双向外键关联

    在Hibernate中,一对一关系可以通过两种方式实现:外键关联和主键关联。本教程重点讨论的是外键关联,这意味着一方的表将包含指向另一方表的外键。双向关联意味着两个实体类都可以直接访问彼此。 接下来,我们将...

    Hibernate一对一单向外键关联(annotation/xml)

    本篇将深入探讨Hibernate中的一对一单向外键关联,通过注解和XML配置两种方式进行实现。这种关联允许一个实体类与另一个实体类之间存在一对一的关系,并且只在其中一个实体类中维护这种关系。 首先,我们来理解一对...

Global site tag (gtag.js) - Google Analytics