当前位置: 首页 > 面试题库 >

多个数据库支持相同的JPA类

夏建弼
2023-03-14
问题内容

我们在项目中使用MYSQL和Hibernate。

JPA用于将对象持久存储在DB中。

我们有多个具有相似代码的类

@Entity
@Table(name = "users")
class Users implement Serializable {
   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   private Long id;
    .
    .    
    .
   public Long getId() {
    return id;
   }

   public void setId(Long id) {
    this.id = id;
   }
}

现在我们也想对oracle提供支持。我们应该怎么做?oracle不支持strategy = GenerationType.AUTO。

一个解决方案是我们可以在每个POJO中定义我们不想做的序列吗?

请提供一些建议,以便我们继续前进。


问题答案:

AUTO策略也应适用于Oracle。与MySQL的区别在于它将使用序列而不是依赖于auto_increment ID。

如果需要,您甚至可以控制每个实体的序列名称:请参见oracle上的Hibernate序列,@GeneratedValue(strategy =GenerationType.AUTO)。



 类似资料:
  • 我有不同的客户使用不同的数据库服务器(postgres,oracle,mysql等) 我想写我的代码一次,并能够在不同的数据库运行。 实现这一点的“Mybatis”方法是什么? null 我正在使用mybatis java注释。

  • 目前ActiveRecordPlugin提供了MysqlDialect、OracleDialect、PostgresqlDialect、SqlServerDialect、Sqlite3Dialect、AnsiSqlDialect实现类。MysqlDialect与OracleDialect分别实现对Mysql与Oracle的支持,AnsiSqlDialect实现对遵守ANSI SQL数据库的支持。以

  • Django试图尽可能多的支持所有数据库后端的特性。然而,并不是所有数据库都一样,所以我们必须在支持哪些特性和做出哪些安全的假定上做出设计决策。 本文描述了一些Django使用数据库的有关特性。当然,它并不想成为各服务器指定的文档或者参考手册的替代品。 综合说明 持续连接特性 持续连接的特性避免了每一次重新建立与数据库的连接的请求中所增加的压力。这些连接通过 CONN_MAX_AGE 参数(控制一

  • 1. 前言 动态 SQL 是 MyBatis 最标志性的特性之一。在其它框架中,你可能需要根据不同的条件来拼接 SQL,辗转在符号与条件的判断上,处理起来麻烦而且易错,而 MyBatis 的动态 SQL 可以让我们摆脱这种痛苦,简单而又高效的书写 SQL。 MyBatis 动态 SQL 由 OGNL 表达式和条件标签两部 分组成,我们将会分为多个小节进行介绍。 OGNL 表达式是动态 SQL 的基

  • 使用JDBC驱动程序,我如何使用来自不同查询的多个结果集,而不不断地打开和关闭连接,因为我正在提取所需的w.e并将其传递给另一个方法。每次打开新的conn、语句和结果集时 我试图在一个方法中使用多个结果集,但它一直抛出异常,称结果集已关闭。我没有太多的SqlServver经验,所以任何指导都会有所帮助:-)

  • 问题内容: 我有一个Spring + Hibernate + JPA应用程序。用户登录时,可以从要连接的数据库列表中进行选择(这是要求)。所有数据库都有相同的架构,因此将使用相同的实体和DAO。 现在,我有一个EntityManager(目前正在使用一个数据库),它被注入到DAO中,如下所示: 有什么方法可以让DAO根据从服务层接收到的参数/属性自动接收entityManager(由Spring管