可翻译的Hibernate模型的设计模式

时间:2009-10-19 09:52:28

标签: hibernate internationalization datamodel

我有一个Hibernate模型,(简化)看起来像这样:

public class CoverageLine {
  private Long id;
  private String coverageText;
  private boolean coveragePresetTo = true;
  private OnNewPolicy onNewPolicy = OnNewPolicy.SHOW;
}

我需要将coverageText(可由最终用户)翻译成任意多种语言,但使用相同的ID,这样我就可以用英语或德语请求策略(添加行),并且getCoverageText()返回的相关文本版本。其他字段在数据库中不可翻译,它们使用资源文件进行翻译,因此数据库中的对象的多个版本是不可取的。

我的暂定计划是创建一个JSON clob字段,并将所有值存储在其中([{“lang”:“en”,“value”,“....”}],[{“lang” :“de”...}]),将语言设置为瞬态字段,并使用get / set方法操作JSON,但这并不是最佳实践的感觉。或者,要使用第二个包含行ID,语言和字符串的表,但这可能会使我的数据模型充分膨胀,而不仅仅是拥有更多的SQL-y数据。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

将所有选择发送到用户界面不是我的首选。

一种方法是将词汇存储在表格中。 Coverage表将有一个语言列外键,用于选择您正在处理的语言。该值将被加载到对象中,您就完成了。

缺点是区域设置更改需要往返服务器,数据库和返回。

Spring使用依赖于语言环境的视图完成此操作。也许你也可以试试。