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 给出错误结果