我有一个应用程序需要支持多语言界面,确切地说是五种语言.对于接口的主要部分,可以使用标准ResourceBundle方法来处理此问题.但是,数据库包含许多表,其元素包含人类可读的名称,描述,摘要等.需要能够以所有五种语言输...
我有一个应用程序需要支持多语言界面,确切地说是五种语言.对于接口的主要部分,可以使用标准ResourceBundle方法来处理此问题.
但是,数据库包含许多表,其元素包含人类可读的名称,描述,摘要等.需要能够以所有五种语言输入这些表中的每一个.
虽然我想我可以简单地在每张桌子上都有字段
NameLang1
NameLang2
...
我觉得在编写代表每个表的bean时会导致大量相同的代码.
从纯粹面向对象的角度来看,解决方案很简单.每个类只有一个Text对象,其中包含每种语言中的相关文本.这进一步有用,因为只有一种语言是强制性的,其他语言具有后备规则(例如,如果语言4缺少返回语言2,其返回到语言1,这是强制性的).
不幸的是,将其映射回关系数据库,意味着我最终得到了一个表,其中有大约10-12个其他表FK(实际上有些表有多个FK).
这种方法似乎有效,我已经能够使用Hibernate将数据映射到POJO.关于你唯一不能做的是从Text对象映射到它的父对象(因为你无法知道你应该链接到哪个表),但几乎没有必要这样做.
所以,总的来说这似乎有效,但让多个表像这样引用一个表只是感觉不对.谁有更好的主意?
如果重要我正在使用MySQL …
解决方法:
我必须这样做…一些表的多语言文本…我不知道我是否找到了最佳解决方案,但我所做的是使用与语言无关的信息表,然后是一个包含所有表的子表多语言领域.对于默认语言,子表中至少需要一条记录;以后可以添加更多语言.
在Hibernate上,您可以将子表中的信息映射为Map,并获取所需语言的信息,如您所说,在POJO上实现回退.您可以为多语言字段使用不同的getter,在内部调用fallback方法以获取所需语言的适当子对象,然后只返回必需字段.
这种方法使用更多的表(每个需要多语言信息的表一个额外的表)但性能要好得多,以及我认为的维护……
本文标题为:java – 数据库表中的多语言字段
基础教程推荐
- java – 检查日期数据库并执行 2023-11-04
- 深入了解Java中的过滤器Filter和监听器Listener 2023-02-05
- java – 尝试执行PreparedStatement时,“?”附近的MySQLSyntaxErrorException 2023-11-05
- Spring data jpa @Query update的坑及解决 2022-10-30
- SpringBoot整合Redis实现常用功能超详细过程 2023-04-18
- lazy init控制加载在Spring中如何实现源码分析 2023-05-13
- 是否可以将基本JDBC SQL类型映射到Java类? 2023-11-04
- SpringBoot AOP AspectJ切面技术介绍与实现方式 2023-06-23
- jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法 2023-08-02
- IDEA2022搭建Spring Cloud多模块项目的详细过程 2023-06-10