spring - JPA,外部化列、表或模式名称?

标签 spring hibernate tomcat jpa

我将 Spring+Hibernate+Tomcat+Oracle 应用程序调整为分布式形式,需要在 JPA 注释中自定义模式名称,类似于 Spring EL:

@Entity
@Table(name = "LOSS", schema="${app.dataSchema}")
public class Loss { ... }

我在上面的示例中寻找像 ${app.dataSchema} 这样的注释中的占位符支持。或者任何其他可能性...

想法 - 拥有无需重新编译即可部署到另一个站点的应用程序,其中保留了数据库关系/层次结构,但更改了一些名称并且可以通过系统属性、JNDI 或部署上下文描述符进行配置。

我看到的一个解决方案是在选定的模式中创建 View - 在实际模式/表/列和应用程序硬编码名称之间提供桥梁。

但我希望 JPA/Hibernate/Spring 有一些用于此类配置的工具...

最佳答案

使用orm.xml。这就是 JPA 提供它的目的。如果您需要更改部署,将部署信息放在注释中不是一个好主意,因此只需使用不同的 orm.xml 文件就可以轻松实现。请注意,您也可以在 orm.xmlpersistence-unit-defaults 部分设置默认架构

关于spring - JPA,外部化列、表或模式名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978242/

相关文章:

java - Spring 集成: How to filter specific headers - only possible with header mapper?

spring - Oauth2从 token 获取用户名

java - 通过属性禁用 Spring 调度程序任务

mysql - 从 MySQL/oracle 中的多个表计数

tomcat - 有没有办法刷新 Liferay Portal 内容中缓存的 ip 地址

tomcat - 在Myeclipse中部署一个web项目

java - Spring bean 的单例实现

java - 当我们在 hibernate 中删除实体时会检查版本吗?

java - JPA ManyToMany ConcurrentModificationException 问题

tomcat - 在 Tomcat 上设置 SSL 并访问 https