Spring with Hibernate-如何动态传递模式名称

Posted

技术标签:

【中文标题】Spring with Hibernate-如何动态传递模式名称【英文标题】:Spring with Hibernate- how to pass schema name dynamically 【发布时间】:2017-01-11 12:51:20 【问题描述】:

我正在使用 spring-Hibernate DAO 层,我创建了具有数据源和所有 hbm xml 列表的 spring 配置文件,并且每个 hbm 都与表映射为 表 =“schema1.table1”

我们在生产中有另一个模式说 prodSchema,我想知道如何通过使用 propfile 等动态地将模式名称传递给 hbm 文件,以便在运行时我可以更改。

【问题讨论】:

【参考方案1】:

Java 注解只支持编译时常量。即您不能将变量放在注释参数中。 参考:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28

您的情况对于大多数项目和开发人员来说都很常见。我通常使用外部数据库配置文件,我在其中放置连接参数、模式和凭据。该文件在每个环境中创建一次,并保持不变,直到数据库服务器发生任何变化。

通用 Hibernate 属性供快速参考。

hibernate.connection.driver_class:JDBC驱动类

hibernate.connection.url:JDBC URL(可能包含架构)

hibernate.connection.username:数据库用户

hibernate.connection.password:数据库用户密码

hibernate.default_schema :用 在生成的 SQL 中给定模式/表空间。例如SCHEMA_NAME(使用这个 如果您未在 JDBC URL 中指定)

【讨论】:

以上是关于Spring with Hibernate-如何动态传递模式名称的主要内容,如果未能解决你的问题,请参考以下文章

Spring 4 with hibernate 5.2 Configuration(将hibernate 4移动到5.2):无法启动tomcat服务器

Spring Security with Hibernate,存储加密密码

Spring Security with hibernate:hasRole() 在配置中不起作用

Hibernate DetachedQuery 和 Spring 的 HibernateTemplate with Restriction 给出错误结果

Spring Boot with Hibernate:在已经存在时继续创建数据库

Spring Boot with hibernate:创建复合键和多对多关系