当前位置: 首页 > 知识库问答 >
问题:

如何对多种数据库类型使用@Table JPA注释?

东方琪
2023-03-14

我正在开发一个SCADA应用程序,目前使用的是Microsoft SQL Server。我的数据库如下所示:

我使用InteliJ idea使用JPA注释生成Hibernate映射。表格注释如下所示:

@Table(name = "EM_ANSI_POLL_DATA", schema = "dbo", catalog = "EMDB")

现在我们需要根据客户的要求使用许多不同的数据库。我们需要支持MySql、Oracle和H2DB。这令人困惑,因为每种数据库类型都有不同的概念。我如何确保相同的代码可以正确地用于上述每个数据库?如何在不更改Hibernate代码的情况下将数据库移植到MySQL、Oracle和H2DB?

请注意,我使用的是Spring靴。我申请表中的条目。属性如下所示:

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=EMDB
spring.datasource.username=sa
spring.datasource.password=*******
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto =none

共有2个答案

路欣荣
2023-03-14

鉴于您正在通过属性文件配置数据库,您应该能够通过更改属性连接到另一个数据库。

例如,如果您想使用H2数据库,以下是配置:

spring.datasource.url=jdbc:h2:mem:EMDB
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=*********
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop # this is to auto-generate the database schema

并且还需要在pom.xml文件中添加驱动:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
杨凯旋
2023-03-14

如果你只对整个应用程序使用一个模式或/和目录,我想把这些设置放在Hibernate配置中会更灵活:

<property name="hibernate.default_catalog" value="EMDB"/>
<property name="hibernate.default_schema" value="dbo"/>

然后很容易将其更改为另一个数据库。

也可以看到这一点。

 类似资料:
  • 问题内容: 我有4种类型的用户,每个都有具体的数据,但他们也分享COMMUN数据,如,.. 我的第一个想法是用列创建一个主表。然后,当查询用户数据时,我可以先选择它们,然后根据运行情况选择不同的查询来获取“用户类型”的特定数据。我对此并不满意,因为我希望我可以通过一个查询并最好使用外键来获取所有与用户相关的数据。 第二个想法是在表中没有列,而是使用外键,该键来自特定用户类型的表将指向主表的一行。尽

  • 问题内容: 我通过本机方法获得了。 在3个开始s,则仅包含双打。第三个告诉我接下来的双打次数。 我能够阅读前三秒。 为什么在我尝试读取双打时代码崩溃? 获得前三个整数的相关代码: 获得剩余双打的相关代码: 问题答案: 在您发布的代码中,您将其称为: 这会将12加到 ,而不是数字。 返回一个地址;由于前3 个字节各为4个字节,因此我相信您正确地添加了12个字节,但未 在正确的位置添加它 。 您可能打

  • 我现在正在开发一个系统,该系统将表的主键定义为“int”,这个主键有一个规则序列:“yearmonthmonth”6个数字。例如:“2105000001”,但“22”(2022)的年份没有被预测,或者,如果我将序列的这种模式调整到当前年份,它将给出一个错误,因为它超过了最大值。质疑:这个系统非常庞大,在java、postgresql数据库中,切换到Long的利弊是什么?它会对数据库性能产生类似的影

  • 我将使用而不是绑定用户输入并将其写入数据库。当将请求处理程序方法(book book)中的数据绑定为book对象时,我感到困惑,那么我应该如何将该对象传递给数据库呢?通常使用,我根据我的模型类逐个变量绑定用户输入,然后使用相关的DAO方法将它们发送到db。我在下面展示我的课程。如果我使用,谁能说出我的请求处理程序方法应该是什么样子? 模型类: 控制器: 公共类簿记员{

  • 问题内容: 很抱歉,如果这是重复的,尽管我无法在任何地方找到确切的答案: 有没有办法在 postgreSQL中 创建一个包含多个数据类型的数组? 我有一个类型的列(类型文本数组);尽管我想从type插入三个条目,然后插入第四个条目到此数组中。 有办法吗?如果是这样,怎么办? 问题答案: 我不认为有一种方法可以声明具有多个类型的数组。但是,我认为您可以使用复合类型来完成您想做的事情,例如, 然后,您

  • 问题内容: 我有这样的功能: 我试图根据类型返回不同类型的字符串。我只是停留在如何编写一个接受不同类型参数的函数上。 问题答案: 您可以将接口类型用作参数,在这种情况下,可以使用实现给定接口的任何类型来调用函数。在Go类型中,如果类型具有接口的方法,则它们会自动实现任何接口。因此,如果您想接受所有可能的类型,则可以使用空接口(),因为所有类型都可以实现该接口。无需对您的功能进行其他修改。 您还可以