java spring web应用中实体本地化的最佳实践

Posted

技术标签:

【中文标题】java spring web应用中实体本地化的最佳实践【英文标题】:Best practice for entities localization in java spring web applications 【发布时间】:2011-05-26 13:08:54 【问题描述】:

我正在寻找在我的网站上本地化动态(用户生成)内容的最佳方式。我正在使用 spring-mvc,我发现它的框架非常好,但现在我需要以多种语言提供多个实体。 我发现对于静态文本,i18n 是我同意的最佳方式,但如果我理解正确,它就不能用于本地化存储在数据库中的内容。

因为我必须在数据库中存储本地化和原始内容,现在我需要知道这样做的最佳方法是什么 例如我有实体:

@Entity 
public class Article 

    private Long id;

    private String title;

    private String body;


如果我希望它支持本地化,它应该是什么样子?

@Entity 
public class Article 

    private Long id;

    @OneToMany
    private Set<LocalizedTitle> localizedTitles;

    private String body;


我不喜欢这个解决方案,但我想不出更好的方法,这就是我来这个地方的原因......可能有一些内置在 jpa/hibernate 中的东西我可以使用?

感谢您的帮助

【问题讨论】:

考虑一个地图 本地化标题。与您当前的本地化标题没有太大区别,但可以从 ServletRequest 获得区域设置。 @dwb 只是你不能用 JPA 持久化地图 【参考方案1】:

我会让整篇文章本地化:

文章容器:

@Entity
public class Article

    @Id
    private Long id;

    @OneToMany(mappedBy="container")
    private Set<LocalizedArticle> localizedArticles;


本地化版本:

@Entity
public class LocalizedArticle

    @ManyToOne
    private Article container;

    @Id
    private Long id;

    private String body;

    private String title;

    private String locale;


在您的查询中,您将按语言环境查找本地化版本。

【讨论】:

以上是关于java spring web应用中实体本地化的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

java web spring jpa 在以接口为dao的方法里使用原生sql,联合查找没有对应实体,用啥来接收? 求大神

Spring saml,第二个本地 SP - 实体别名和上下文提供者

Spring中Web应用程序的MVC结构?

在 Java 或 Grails 应用程序中动态创建实体、Spring 存储库和 facelets 页面

如何在 Spring Boot 应用程序中将 java lang long 转换为实体类

领域驱动设计和Spring