以下问题:我想根据本地化文本呈现短消息的新闻流。在这些消息的不同位置,我必须插入参数来“自定义”它们。我猜你知道我的意思;)
我的问题可能属于“哪种方式最好?” category:如何在数据库中存储这些参数(它们可能是需要根据Locale格式化的字符串和数字)?我正在使用Hibernate来做ORM,我可以想到以下解决方案:
我倾向于选项#3,但我担心数据库中的大小可能会很昂贵。你觉得怎么样?
答案 0 :(得分:3)
如果您能够承受使用标准化方法获得单独表格的性能影响,我会采用这种方法。我们使用与您工作中的第一个建议相同的方法,它会凌乱,尤其是当您达到列限制并且键/值开始被截断时!
答案 1 :(得分:1)
进行规范化。 我会建议像:
表格消息 ID
表参数 MESSAGE_ID 键 值
在大多数情况下,将序列化的Java对象存储在数据库中是一件非常糟糕的事情。因为它们难以维护,您无法使用“简单”SQL工具访问它们。
性能影响不是很大,因为您可以使用连接在一个选择中一起获取所有内容。
答案 2 :(得分:1)
这有点依赖。每个实体的参数数量都很大吗?如果不可能第二种选择是最好的。
如果您不想添加由延迟加载引起的额外查询,您可以随时更改可变数量的参数的获取类型,这些参数只会将一个连接添加到您一直在执行的查询中。在正常情况下,这不是一个很大的代价。
此外,第三个和第一个禁止对参数进行任何类型的查询。对于未来的巨额技术债务我不愿意支付。
答案 3 :(得分:0)
直接把它作为字符串并保存..