gpt4 book ai didi

java - 数据库表中的多语言字段

转载 作者:可可西里 更新时间:2023-11-01 07:33:56 27 4
gpt4 key购买 nike

我有一个应用程序需要支持多语言界面,确切地说是五种语言。对于接口(interface)的主要部分,可以使用标准 ResourceBundle 方法来处理。

但是,数据库包含大量表格,其元素包含人类可读的名称、描述、摘要等。需要能够以所有五种语言输入每一项。

虽然我想我可以简单地在每个表上设置字段,例如

NameLang1
NameLang2
...

我觉得在编写代表每个表的 bean 时,这会导致大量基本相同的代码。

从纯面向对象的角度来看,解决方案非常简单。每个类都有一个 Text 对象,其中包含每种语言的相关文本。这更有用,因为只有一种语言是强制性的,其他语言有回退规则(例如,如果语言 4 缺少返回语言 2,返回语言 1 是强制性的)。

不幸的是,将其映射回关系数据库意味着我最终得到一个表,其中有 10-12 个其他表 FK(实际上有些表有不止一个 FK)。

这种方法似乎可行,而且我已经能够使用 Hibernate 将数据映射到 POJO。您唯一不能做的就是从 Text 对象映射到它的父对象(因为您无法知道应该链接到哪个表),但是几乎没有必要这样做。

所以,总的来说,这似乎可行,但让多个表引用一个表这样感觉是不对的。谁有更好的主意?

如果这很重要,我正在使用 MySQL...

最佳答案

我不得不这样做一次......一些表格的多语言文本......我不知道我是否找到了最好的解决方案,但我所做的是让表格包含与语言无关的信息,然后是子表格与所有多语言领域。对于默认语言,子表中至少需要一条记录;以后可以添加更多语言。

在 Hibernate 上,您可以将子表中的信息映射为 Map,并获取所需语言的信息,像您所说的那样在 POJO 上实现回退。您可以为多语言字段使用不同的 getter,它们在内部调用回退方法以获取所需语言的适当子对象,然后只返回所需的字段。

这种方法使用了更多的表(每个需要多语言信息的表一个额外的表)但是性能要好得多,而且我认为维护...

关于java - 数据库表中的多语言字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936936/

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