问题标签 [legacy-database]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
596 浏览

grails - Spring Security Grails 插件与现有数据库模式一起使用?

我最近遇到了一种情况,我想在现有的数据库模式上实现 Grails + Spring Security。数据库已经有一个用户表、一个基于角色的表和关系角色+用户表。我能够将用户域映射到现有架构..但是我遇到问题的地方是尝试绑定角色和用户角色时。

有任何想法吗?这有意义还是我需要包含更多信息?

0 投票
3 回答
115 浏览

frameworks - 如果我有遗留数据库,我应该放弃框架吗?

无论我走到哪里,似乎框架(任何语言)都是为新的实现量身定制的。使用带有遗留数据库的框架的 ORM 似乎也不是一件正常的事情。

我有数据库,大约有 20 年的历史,我需要在所有这些上都有一个 Web 前端,一些在单独的网页上,一些在一个页面上组合数据库。其他的没那么老,但我无法控制它们 Oracle、Sql Server,甚至 FoxPro。我需要做的几乎没有一个新数据库——它们都已经存在。

框架对我来说只是错误的解决方案吗?我可以在没有框架的情况下拥有 MVC 吗?我不确定如何避免非 mvc 实现。

谢谢你的想法。

编辑:

我有很多遗留数据库,似乎很难对它们使用 ORM。是否可以在没有 ORM 的情况下使用 MVC 模式?谁能推荐一个允许这样做的框架?

我可以使用任何语言和任何平台。PHP、Python、Java、C# 等。将框架粘合在一起就可以了。我不在乎。我不想要的是黑客。也就是说,使框架不按照某些代码(也称为 hack)的意图去做。没有冒犯的意思。我只是不想这样开始。

我主要关心的是有点现代,并且非常注意不要混合逻辑和表示层。我来自经典 asp 的旧世界,所有东西都混合在一起,我不再想要这样了。

0 投票
1 回答
127 浏览

nhibernate - 遗留数据库 - 我应该使用 NHibernate 吗?

我被一个涉及复合键的遗留数据库困住了,没有空间来修改数据库。

问题似乎是密钥的一部分也用于每个外键。因此,如果我有这样的表 A 和 B:

一种

  • 公司(PK)
  • 援助(PK)
  • 一些更多信息

  • 公司(PK、FK)
  • 出价 (PK)
  • 援助(FK)
  • 一些其他信息

表 B 中的公司字段是表 B 的 PK,用于表 A 的 FK。我尝试的所有事情都导致我出现Repeated column in mapping异常。

所以这不是一个“我该怎么做”的问题(好吧,如果你有解决方案 - 继续我会认为自己很幸运,如果这只是我的想象并且没有真正的问题......)而是一个“你觉得这是对”的问题。

  • 是否可以使用 nhibernate 访问这样的数据库(嗯,除了映射所有表 1:1 没有引用)
  • 你觉得这是个好主意吗?
  • 考虑到我的情况,有哪些替代方案(即是否有任何 O/R-Mappers 擅长于此)?

顺便说一句:是同样的问题,我的复杂场景之一是here

0 投票
2 回答
117 浏览

sql - 从 .NET MVC 2 转换为 Django

我们的 .NET MVC 2 应用程序设计过度。数据模型是可靠的,但其他一切都是一团糟。

是否可以在我们的 MS SQL 数据库中“指向”Django,并让它从我们现有的数据库结构中生成基本的脚手架和管理接口?

0 投票
2 回答
912 浏览

hibernate - 遗留数据库结构 Hibernate 映射问题

我在映射以下数据库结构时遇到问题(为简洁起见,仅使用 PK/FK 和一些额外的列进行了缩短:

政策

Policy_Id (PK) ...

风险

Risk_Id (PK) ...

聚会

Party_Id (PK) ...

派对角色

  • PartyRole_Id (PK)
  • Party_Id(FK 非空)
  • Policy_Id (FK)
  • Risk_Id (FK)
  • Party_Role_Type

因此,PartyRole 表可以包含将一方链接到策略的行和/或将同一方链接到风险的行。基本上它是一个多对多连接表,但它结合了多对多关系:Party<->Policy 和一个用于 Party<->Risk 的关系。Party_Role_Type 可以是 POLICY 或 PARTY 并且有效地充当鉴别器来识别该行属于哪个关系。

我试图用 4 个实体来建模这个结构:Policy、Party、Risk、PartyRole。以下是映射: 代码:

所有 java pojo 都设置为匹配此映射,并且在集合中添加或删除对象时正确设置所有关联。策略被认为是一个聚合根,所以当它被 Hibernate 保存时,我想保存与策略关联的各方。当我将一方添加到策略和风险(以及所有相关角色)时,我得到以下异常:

引起:java.sql.BatchUpdateException:完整性约束违规:外键无父;FK_PARTY_ROLE_POLICY 表:PARTY_ROLE

怎么了?这也是映射这种关系的最佳方式吗?是否有机会在使用中间实体的情况下以某种方式映射这种关系?谢谢你的帮助。

0 投票
1 回答
392 浏览

nhibernate - 如何映射主键由 2 个字段(一组插入,一个身份)组成的数据库?

我目前正在开发一个带有 SQL Server 2000 数据库的旧 ASP 应用程序,我们正在尝试使用 .NET 和NHibernate将其移植到更新的技术。

在该数据库中,所有表都有一个复合 ID,如下所示:

也就是说,每个表的主键由:

  • XXXSqlId,它是创建项目的 SQL Server 实例的 ID
  • XXXIncId,这是一个IDENTITY在插入新行时递增的字段

关键SqlId在于,当复制发生时,记录会从一个数据库移动到另一个数据库,并且XXXIncId可能会发生重复。不幸的是,没有更改数据库模式,因为很多应用程序都依赖它(这确实很痛苦)。

这也意味着每当表之间存在关系时,都需要提供两个字段,如createdByIncId , createdBySqlId.

我正在寻找用 NHibernate(流利与否)映射此结构的最佳方法,但我被阻止了。我考虑了以下解决方案:

  • 使用带有 SqlId 和 IncId 的Composite-ID(最自然的解决方案)但它不起作用,因为 IncId 是由数据库生成的,并且 CompositeID 不支持“生成”属性
  • 完全忽略这些字段并将“rowguid”视为真实 ID:只要我不尝试处理实体之间的关系,这也很有效,它也应该使用“复合 ID”作为链接......
  • 使用自定义复合用户类型( ICompositeUserType) :但这不能用作实体的 ID。

我的问题与问题1615647非常相似,但答案对我来说并不令人满意。

有什么想法可以跟进吗?

0 投票
2 回答
15111 浏览

hibernate - JPA OneToOne 关联,其中 2 个实体使用复合主键但使用不同的列名?

我们正在尝试将 Hibernate 与使用大量复合键的数据库一起使用,这让我们很头疼。不幸的是,我们不能改变模式,所以我们必须在我们的字段之间做很多额外的映射。我们仅限于使用 JPA 1.0 和 Hibernate 3.3。

到目前为止,我们遇到的最大问题是使用 2 个值的复合键来处理两个实体之间的一对一关联,其中表对这些列具有不同的名称(数据库的命名约定是每列上的特定于表的前缀。)

每当我们执行查询时,我们都会得到这个异常:

这些表的两个类 InvestorIssuerEntity 和 InvestorIssuerEmailEntity 有一个可选的 @OneToOne 关联(在某些情况下 InvestorIssuer 在 InvestorIssuerEmail 中没有匹配的记录):

我试图通过对两个实体使用与@EmbeddableId 相同的类,然后使用@AttributeOverrides 来解决类型不匹配问题,如下所示:

不过,我只对这两个实体进行了更改,仍然对其他实体使用 @IdClass 方法(是否仅对您的实体使用 @IdClass 或 @EmbeddableId,而不是两者?)

我们最终遇到了其他问题,例如“实体映射中的重复列”,因此我们恢复了这种方法,看看是否有其他解决方法。

有没有人有任何解决方案来解决这个问题?我查看了 StackOverflow,但没有遇到任何关联中使用的复合键具有不同名称的情况。

注意: 即使尝试了以下建议,我们仍然会收到此错误:org.hibernate.MappingException: Repeated column in mapping for entity: com.business.entity.InvestorIssuerEntity column: T090_091_INVESTOR_ID (应该使用 insert="false" update= 进行映射“错误的”)

我什至从 InvestorIssuerEntity 中删除了所有关联,但仍然遇到同样的问题。仅当我删除复合键类中的 @Column 注释时,该错误才消失。当然,查询不起作用,因为没有映射investorId!我不明白Hibernate 在哪里找到“映射中的重复列”,因为除了复合键之外,我已经删除了 T090_091_INVESTOR_ID 的所有提及。

我们在 InvestorIssuerEntity 中有其他关联,它们对相同的主键进行连接,但关联的实体在其复合键中也有额外的列。使用 @EmbeddedId 后,是否应该将它们用于所有实体?对于其他类,我们仍然使用 @IdClass。但是,这如何在任何地方导致“重复列”?

0 投票
1 回答
217 浏览

fluent-nhibernate - Fluent NHibernate with Legacy 数据库复合问题

我知道这些问题被问过很多次,但有些问题已经超过 6 个月,而且产品也在不断发展。

我有一个数据库模式,由一些真正的专业人士新设计,结构精美,位于 Enterprise Architect 中,可以生成任何所需的数据库引擎类型。我还不想扔掉它,只是。它大约有 3-4k 张桌子。

我真的有很多问题。我从阅读堆栈和各种博客中了解到,在使用 NHibernate 时,具有自动映射和约定的 Fluent NHibernate 是构建与遗留数据库良好集成的域层的最佳方式。我知道这是主观的,但这仍然是真的吗?

是否有任何使用 FH 映射到现有数据库的示例或开源项目,以了解它如何大规模工作。

在我走之前,有没有人有使用商业工具集的经验?目前的艺术状态是什么。我查看了一整套文档,但许多文档都是针对未开发的,如果排除 FH,很难确定什么是最佳选择。这需要正式的产品测试、指标和创建的报告来确定最佳选择,但经验很重要。

谢谢。任何帮助,将不胜感激。鲍勃。

0 投票
1 回答
1019 浏览

ruby-on-rails - 处理 Rails 中的遗留数据库视图

我是 ruby​​ 和 rails 的新手,我很难将 MVC 技术与数据库视图结合起来进行概念化。我正在处理一个遗留数据库,它有几个用于生成报告的视图。

我迷路的地方是我如何实际使用数据库视图。它应该放在模型中吗?如果是这样,那究竟会是什么样子?

例如,遗留数据库有一个名为 qryTranscriptByGroup 的视图。它在遗留应用程序中的 SQL 语句中使用,例如“SELECT * FROM qryTranscriptByGroup WHERE group='test_group'”。这会返回少量记录,通常少于 100 条。

如果我创建一个模型 Transcript,我将如何定义像 Transcript.find_by_group(group) 这样的方法?同样,似乎我可能需要阻止任何其他“查找”方法,因为它们在这种情况下是无效的。

还有一个事实是视图是只读的,我需要防止任何创建、更新或销毁它的尝试。

也许我正在以完全错误的方式解决这个问题。底线是我需要从代表用户信息的几个表(模型?)中获取信息(副本)。实际上是一个或多个用户(成绩单复数)。

-谢谢!

0 投票
1 回答
565 浏览

ruby-on-rails - 将多个旧数据库迁移到一个 Rails 应用程序中

我有几个(旧的)Drupal 站点需要用一个新的 Rails 应用程序替换。那个新站点应该包含所有旧的 Drupal 内容。旧的 Drupal 内容部分损坏(由于近 7 年的升级、停产的模块等)。它是 Drupal 的事实几乎不相关,只是它会导致一些不一致、奇怪的命名和糟糕的规范化表。

需要导入 Rails 应用程序的内容很简单:内容(博客条目)、附件(图像)和评论。我有两个数据库“陈旧”(不在生产​​中)和另外两个在生产中,但允许关闭/锁定一段时间(几小时,几天)。因此,迁移不需要针对速度进行优化,或者完全保存(意思是:我可以在运行迁移时放弃发布的评论)

Rails(3) 应用程序已基本完成,并且仅使用 Active-record 约定。

由于限制(损坏的、不一致的数据库、需要合并的几个数据库),我更喜欢为此编写迁移,而不是将我的新 Rails 应用程序连接到丑陋、不一致的遗留数据库。

我的问题是:

  • 是否有任何环境、gem 或工具可以使 Rails 中的导入更容易:例如,允许从某些 DSL 中的新旧进行简单映射的东西。
  • 或者更容易完全用 SQL 编写我的迁移:SQL 查询会将旧数据转换为适合 Rails 应用程序的结构?迁移是从 MySQL-> MySQL。
  • 或者我应该将 Activerecord 连接到旧数据库,遍历每一行/结果并运行 Object.save!在我的 Rails 应用程序中?