通过JNDI引用为Hibernate设置默认架构

时间:2017-03-31 08:33:21

标签: java spring hibernate websphere jndi

我使用Spring 4,Hibernate 4和WebSphere 8.5.7。有这样一堂课:

@Entity
@Table(name = "APPLICATION", schema = "NEW_SCHEMA")
public class Application {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE_NEW")
    @SequenceGenerator(name = "SEQUENCE_NEW", schema = "NEW_SCHEMA", sequenceName = "SEQUENCE_NEW", allocationSize = 1, initialValue = 1)
    @Column(name = "ID")
    @Getter @Setter private Long id;

我希望能够通过JNDI名称更改@Table签名中的架构。我希望得到这样的东西:

@Table(name = "APPLICATION", schema = "${schema.jndi}")

假设Websphere将提供${schema.jndi}

另一方面,在业务环境中,任务看起来如下。我需要在整个项目代码(Java,xml,props)中排除任何关于模式的提及。并且可以直接从WebShpere更改架构。

实施解决方案的最简单方法是什么?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果要为整个应用程序(针对每个实体)配置架构,可以在Hibernate配置文件中执行该操作(通常WAS将引用此配置文件)

<property name="hibernate.default_schema">myschema</property>

答案 1 :(得分:0)

IBM WebSphere Application Server提供数据源配置,允许您设置默认架构。 通过左侧菜单栏检查以下内容:

  

资源 - &gt;数据来源 - &gt;您的DataSource - &gt;附加属性 - &gt;自定义属性

查找 &#39; currentSchema&#39; 属性,并将其值更改为所需的架构。请记住保存新配置并测试连接,以确保在群集环境中进行节点同步。 此外,它可能需要重新启动您的应用程序服务器才能看到新的更改。

在这种情况下,您无需在整个项目代码中提及架构名称。