gpt4 book ai didi

java - 多国数据库表和java对象

转载 作者:行者123 更新时间:2023-11-30 09:40:34 25 4
gpt4 key购买 nike

在工作中,我们有一个应用程序,最初是为特定国家/地区开发的。现在一个新客户对该应用程序感兴趣,但是这个客户来自另一个国家。我们必须改变一些对象来代表新的国家。

  • 国家 1,属性 A、B、C、D、E,因此 java 和数据库包含 A、B、C、D、E

  • 新国家 2,属性 A、D、F、G、H

我们提出的解决方案。

数据库:

  • 为新国家/地区创建一个新表

  • 只需将F,G,H添加到当前表

Java:

  • 使用 A、D 抽象当前地址,然后创建国家/地区特定实现(有趣且清晰,但增加了使用接口(interface)的痛苦,因此您必须始终进行类型转换)

    <
  • 只需将 F、G、H 添加到地址(接缝一个不干净的解决方案,知道要添加新国家的那一天可能最终会向对象添加 I、J、K)

  • 修改当前对象使其具有通用属性和一些通用字段,如 info1、info2。 (Seams 是一个很好的解决方案,但通过在业务逻辑中使用 info1、info2... 使代码不清楚)

有人知道解决这类问题的好模式吗?

问候

最佳答案

好的,在澄清评论之后我的理解是:

  • 您已经有一个 Address 类和相关的数据库表
  • 每个国家/地区的每个地址都需要一组不同的地址行
  • 每个国家/地区的代码行为并没有特别不同(即地址的行为方式相似,只是它们具有不同的地址行)

一般来说,当差异真的只是纯数据时,我会避免创建新类。因此拥有两个不同的 Address 类似乎是一个坏主意,无论您是否让它们从单个基类继承。此外,继承层次结构通常不能很好地映射到数据库。

我认为最好的解决方案是将每个国家/地区的属性存储在 HashMap 或类似的东西中,然后确定哪些地址行适用于每个国家/地区。为简单起见,每个地址可能包含一个 HashMap<String,String> ,即键(地址行名称)和值(地址数据)的字符串。

如果这样做,那么您可以高度灵活地设置每个国家/地区的属性,如果您在某个时候添加第三国,您可能不需要任何代码更改 - 只需一组新的地址行.

在数据库中,我将在两个表中表示数据:Address 和 AddressLine,具有明显的一对多关系。

关于java - 多国数据库表和java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com