Spring Data JPA适配GaussDB开源验证任务心得

举报
liubao68 发表于 2024/10/31 16:18:44 2024/10/31
【摘要】 Spring Data JPA适配GaussDB开源验证任务心得

Spring Data JPA适配GaussDB开源验证任务心得

第一步先看下任务计划书 https://bbs.huaweicloud.com/blogs/437919 ,大概了解了下这个任务的主要工作是完成 Spring Data JPA连接GaussDB的验证工作。总体来讲不是很复杂,主要是需要花时间熟悉DEMO的结构、环境搭建、扩展新功能和开发简单的界面展示效果。这部分内容在WIKI里面都有介绍,下面介绍下适配过程中的一些关键步骤。

先fork一下DEMO代码

先 fork 一下原始 DEMO: https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview , 本人已经加入了 HuaweiCloudDeveloper , 所以就 fork 到这个组织下面了: https://gitcode.com/HuaweiCloudDeveloper/opensource-demo-spring-data-jpa-241029 。命名规范是 opensource-demo + 项目名称 + 日期。 如果没有加入到 HuaweiCloudDeveloper, 也可以 fork 到自己的个人仓库。

gitcode fork到同一个组织的代码,默认组织外的其他人是没有权限查看的。因此采用import的方式来fork代码。当然这样项目之间不存在fork关系了。

开发过程

首先参考任务计划书给的参考资料: https://spring.io/guides/gs/accessing-data-jpa 。 把官网提供的原代码看了下, 并把关键的类信息拷贝过来, 包括 Customer.java, CustomerRepository.java。 官网采用的是内置数据库, 需要改为GaussDB。 我采用了 openGauss 提供的 JDBC 驱动。 过程中由于 DEMO 使用了 log4j2 记录日志, 和 spring data jpa 依赖的 logback 有冲突, 需要排除。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.opengauss</groupId>
  <artifactId>opengauss-jdbc</artifactId>
</dependency>

为了做好功能验证,增加了 AccessingDataJpaEndpoint.java 提供 REST 接口。 演示了增、查等功能。

最后就是要配置下 JPA, 主要有数据源配置和JPA配置两部分:

spring:
  datasource:
    url: ${DB_URL:jdbc:opengauss://172.0.0.1:8000/postgres?currentSchema=authentication_server_db} 
    username: ${DB_USERNAME:}
    password: ${DB_PASSWORD:}
    driver-class-name: org.opengauss.Driver
  jpa:
    database: postgresql
    show-sql: true
    hibernate:
      ddl-auto: update

开发过程中,少配置了 ddl-auto, 没有自动建表, 以为使用 openGauss 驱动或者使用 Hibernate postgresql dialect 和 GaussDB 存在不兼容, 中间查询了大量资料, 也没找到任何答案。 好在后面加上 ddl-auto 解决了问题。 问题记录在 : https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/issues/13

开发总结

由于本任务是一个JAVA验证项目,部署和运行都是没什么问题的,因此相关的部署验证问题都不再描述了。 通过该任务,可以证明使用 openGauss 的 JDBC 驱动, 加上 Hibernate Postgresql dialect 是可以接入 GaussDB的。

作为一个商业的数据库(类别 Oracle 和 SqlServer等), 从Spring Data JPA的角度,可以发现 GaussDB还有很多不完善的地方。 大概有如下两个关键点:

  • GaussDB没有提供maven中央仓可获取的 JDBC 驱动。 因此对开源项目,只能使用 openGauss的驱动。
  • Hibernate没有提供openGauss和GaussDB的Dialect,只能使用PostgreSQL的。

总体看,虽然能够运行起来,还是给开发者不太可靠的感觉。 期望GaussDB能够更多支持开源社区的共建,提供稳定的,maven central可访问的JDBC驱动,也给 Hibernate贡献代码,定义自己的官方方言。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。