通过 JNDI 参考为 Hibernate 设置默认模式
Set a default schema for Hibernate via JNDI reference
我使用 Spring 4、Hibernate 4 和 WebSphere 8.5.7。有这样一个class:
@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}")
假设 ${schema.jndi}
将由 Websphere 提供。
换句话说,在业务上下文中,任务如下所示。我需要在整个项目代码(Java、xml、props)中排除对模式的任何提及。并且可以直接从 WebShpere 更改模式。
实施解决方案最简单的方法是什么?
任何建议将不胜感激。
如果您想为整个应用程序(每个实体)配置模式,您可以在 Hibernate 配置文件中执行此操作(通常 WAS 将引用此配置文件)
<property name="hibernate.default_schema">myschema</property>
IBM WebSphere Application Server 提供了数据源配置,可让您设置默认模式。
通过左侧菜单栏检查以下内容:
Resources -> Data sources -> YOUR DataSource -> Additional Properties -> Custom Properties
找到 'currentSchema' 属性 并将其值更改为所需的架构。请记住保存新配置并测试连接以确保在集群环境下节点同步。
此外,它可能需要重新启动您的应用程序服务器才能看到新的更改。
在这种情况下,无需在整个项目代码中提及架构名称。
我使用 Spring 4、Hibernate 4 和 WebSphere 8.5.7。有这样一个class:
@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}")
假设 ${schema.jndi}
将由 Websphere 提供。
换句话说,在业务上下文中,任务如下所示。我需要在整个项目代码(Java、xml、props)中排除对模式的任何提及。并且可以直接从 WebShpere 更改模式。
实施解决方案最简单的方法是什么?
任何建议将不胜感激。
如果您想为整个应用程序(每个实体)配置模式,您可以在 Hibernate 配置文件中执行此操作(通常 WAS 将引用此配置文件)
<property name="hibernate.default_schema">myschema</property>
IBM WebSphere Application Server 提供了数据源配置,可让您设置默认模式。 通过左侧菜单栏检查以下内容:
Resources -> Data sources -> YOUR DataSource -> Additional Properties -> Custom Properties
找到 'currentSchema' 属性 并将其值更改为所需的架构。请记住保存新配置并测试连接以确保在集群环境下节点同步。 此外,它可能需要重新启动您的应用程序服务器才能看到新的更改。
在这种情况下,无需在整个项目代码中提及架构名称。