hibernate的关联关系,是否数据库表中有外键没有关系?

问题描述

hibernate的关联关系,是否数据库表中有外键没有关系?
hibernate的关联关系,是否数据库表中有外键没有关系?
昨天使用了hibernate做了一个多对一的关系,然后在做数据库字段的时候,一开始并没有去建立外键约束,只是把关联字段的信息放了上去,然后CRUD操作都没问题,然后看了一篇帖子,上面看到数据库表中有外键约束,这时候才想起来这个事情,我加了外键以后也没什么问题,再去掉还是没有问题,那么这里是加还是不加外键呢?hibernate自己处理好了吗?有什么区别吗?以后是加好还是不加好呢?谢谢各位了。

解决方案

Hibernate中的级联关系和数据库中表之间的外键关系完全是两回事。
数据库中设置外键主要是为了实现外键约束。
Hibernate中的级联关系主要是为了实现ORM的自动查询和存储相关表的数据。

解决方案二:
Hibernate会根据配置自动管理表之间的关联关系的。
其实Hibernate会根据注解自动创建表以及外键关系的,我们只要java实体及配置就行了。

解决方案三:
外键属于数据库设计时需要做的东西,这个不管Hibernate会不会帮你实现,都需要在数据库中自己手动添加,这个是为了保证数据库的约束条件。个人理解

时间: 2024-12-31 01:34:03

hibernate的关联关系,是否数据库表中有外键没有关系?的相关文章

数据库表的外键应用,详细见下

问题描述 数据库表的外键应用,详细见下 如果ABC三张表,A引用B,B引用C,但是A里又有外键引用C,我该如何设计呢 解决方案 能说明下引用的字段么? 解决方案二:

select-两表有外键关系,但没有外键约束,根据A 表ID 查找B 表

问题描述 两表有外键关系,但没有外键约束,根据A 表ID 查找B 表 Select s.ID as SID,s.NAME as SNAME,d.ID as DID,d.NAME as DNAME,d.SEQ as DSEQ,d.SYSDATE as DSYSDATE,d.ISACTIVES as DISACTIVES From TSPC as s,TSPCDETAIL as d where s.ID=d.SPECID and SID=#{SID},根据id 查找 TSPCDETAIL 可以这样写

mysql-请问数据库表中可以在一个表里面有两个关联同一个表的外键吗?

问题描述 请问数据库表中可以在一个表里面有两个关联同一个表的外键吗? 具体是这样的: 我有一个用户表user,一个好友表fans. fans中有三个字段 id,user_id,fans_id,其中user_id和fans_id都是跟user表的id关联的外键,我发现这样会报错. 可是用户跟好友的信息又要与用户表的信息关联,请问各位大神,怎样才不会报错或者有什么好一点的解决办法吗? 解决方案 可以的 FOREIGN KEY (user_id) REFERENCES user(id), FOREIG

关于C#,Java等数据库框架LazyLoad的在表无外键关系时替代方案问题讨论?

问题描述 对于数据库框架,包括现在的.net中的EF等数据库持久层框架,都提供了LazyLoad的机制,然而这个机制建立在表直接存存在主外键关系才可实现对于现行的市场境况,多数成功项目为了便于扩展,都不建立外键,使得LazyLoad的机制不能使用,那么在没有外键情况下能否实现类似于LazyLoad,在程序逻辑上建立关系,实现LazyLoad呢? 解决方案 解决方案二:按你的话说,"数据库框架,包括现在的.net中的EF等数据库持久层框架"如果不使用LazyLoad机制加载,而是一次性就

mysql数据库-两张表没有外键 要计算每个月份poundage,proCharge这两钱的总和

问题描述 两张表没有外键 要计算每个月份poundage,proCharge这两钱的总和 SELECT SUM(poundage),SUM(proCharge) from satisfy,borrowinfo where DATE_FORMAT(satisfydate,'%Y')=DATE_FORMAT(NOW(),'%Y') and DATE_FORMAT(startTime,'%Y')=DATE_FORMAT(NOW(),'%Y') mysql数据库,sql语句改怎么写 解决方案 要看你的表

MySQL数据库中的外键约束详解

使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程.理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务器端脚本语言,就足以应付对MySQL表所需的各种操作了,尤其是当您使用了快速MyISAM数据库引擎的时候.但是,即使在最简单的情况下,事情也要比我们想象的要复杂得多.下面我们用一个典型的例子进行说明.假设您正在运行一个博客网站,您几乎天天更新,并且该站点允许访问者评论您的帖子. 在这种情况下,我们的数

java-问题 如何用Java程序实现,父表的主键插入到子表的外键中?

问题描述 问题 如何用Java程序实现,父表的主键插入到子表的外键中? 需求从excel导入数据到mysql数据库,然后父表的主键是自增列,插入数据同时把主键插入子表的外键中(我已经把主表的数据插入了)

Oracle批量执行sql语句之禁用所有表的外键_oracle

在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入. 然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢? 于是我百度到以下资料: oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束 执行以下sql生成的语句即可 1删除所有外键约束 select 'alter table '||table_name||' drop constraint '||constraint_name

数据-Mysql中设置表的外键的时候报错

问题描述 Mysql中设置表的外键的时候报错 这个是原句子: ALTER TABLE emp ADD CONSTRAINT id_fk FOREIGN KEY (deptno) REFERENCES Dept (deptno); 就是想把emp表的deptno设置为外键,该列的数据引用Dept表的主键列deptno的数据.然后,报错信息如下: Cannot add or update a child row: a foreign key constraint fails (emp.#sql-1a