GBase 8s
适配迁移
文章

Springboot+JPA+Hibernate+GBase 8s示例

GBase社区管理员
发表于2022-09-06 21:08:001830次浏览3个评论

IntelliJ IDEA 2018.3.6 x64

新创建项目(New Project),选Spring Initializr,SDK使用1.8,使用默认的https://start.spring.io创建
image001.png

项目元数据: 注意Artifact,Packaging和Java Version image002.png Dependencies中选上Web -> Spring Web,注意选择Sping Boot的版本,这里使用的是2.7.3
image003.png 指定项目名称和路径
image004.png 完成后,生成项目。

在项目的根目录下的pom.xml中增加依赖(dependency)

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

image005.png 新建目录jars,引入GBase 8s的jdbc驱动和hibernate方言包(需要与hibernate版本对应或者兼容) image006.png 这里使用到hibernate版本是5.6.10,对应的GBase 8s方言包可以在https://gbasedbt.com/dl/hibernate/3.0/ 中找到。

在项目src\main\resources下的application.properties配置文件中,增加spring和jpa的配置信息

spring.datasource.driver-class-name=com.gbasedbt.jdbc.Driver
spring.datasource.username=gbasedbt
spring.datasource.password=GBase123
spring.datasource.url=jdbc:gbasedbt-sqli://h01.gbasedbt.com:9089/testdb:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_LOCK_MODE_WAIT=60

# 让控制器输出json字符串格式
spring.jackson.serialization.indent-output=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
# 设置数据库引擎
spring.jpa.database-platform=org.hibernate.dialect.GBasedbtDialect

image007.png

创建pojo类(com.gbasedbt.springboothibernategbase8s.pojo.User.java)
image008.png 创建dao接口(com.gbasedbt.springboothibernategbase8s.dao.UserDao.java)
image009.png 创建service接口(com.gbasedbt.springboothibernategbase8s.service.UserService.java)
image010.png 创建serviceimpl类(com.gbasedbt.springboothibernategbase8s.serviceimpl.UserServiceImpl.java)
image011.png 创建Controller类(com.gbasedbt.springboothibernategbase8s.UserController.java)
image012.png

启动环境
image013.png 在浏览器中插入用户
image014.png 在浏览器中查询用户(以id为条件)
image015.png 在浏览器中删除用户(以id为条件)
image016.png 后台日志显示相应的语句 image017.png

源代码: springboot-hibernate-gbase8s.zip

评论

登录后才可以发表评论
GBase用户9527发表于 2年前
大佬 想问个问题,我也是这样引入gbase驱动的,可是项目打包后就加载不了gbase驱动,pom里加了如下类似配置也没用 src/mai/resource lib BOOT-INF/lib/ **/*.jar
GBase用户26197发表于 6个月前
@GBase用户9527:请问后来是怎么解决的?
GBase用户15957发表于 1年前
如果将自动创建库表ddl配置设置为update,启动会报错。
spring.jpa.hibernate.ddl-auto=update

报错信息如下:

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Error accessing table metadata
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
... 21 common frames omitted
Caused by: org.hibernate.exception.GenericJDBCException: Error accessing table metadata
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.convertSQLException(AbstractInformationExtractorImpl.java:124)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.getTables(AbstractInformationExtractorImpl.java:577)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:122)
at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:68)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:220)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:123)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:196)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
... 25 common frames omitted
Caused by: java.sql.SQLException: 无 CONNECT 权限。
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3574)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3856)
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2746)
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2671)
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1616)
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1543)
at com.gbasedbt.jdbc.IfxResultSet.a(IfxResultSet.java:215)
at com.gbasedbt.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1253)
at com.gbasedbt.jdbc.IfxStatement.executeQuery(IfxStatement.java:350)
at com.gbasedbt.jdbc.DatabaseMetaDataOracleMode.getTables(DatabaseMetaDataOracleMode.java:799)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processTableResultSet(InformationExtractorJdbcDatabaseMetaDataImpl.java:64)
at org.hibernate.tool.schema.extract.internal.AbstractInformationExtractorImpl.getTables(AbstractInformationExtractorImpl.java:565)
... 37 common frames omitted
Caused by: java.sql.SQLException: ISAM 错误:找不到任何记录。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3861)
... 47 common frames omitted
加载中...