работает ли springboot jpa с базой данных netezza? - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь подключить мое приложение springboot к моей базе данных netezza, но безуспешно.Я пытаюсь использовать учебник по адресу: https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql-jpa-hibernate/

Я заменил spring.datasource.url на мой URL базы данных netezza, но безуспешно.Как я могу подключиться к netezza, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Для таких ленивых, как я,
1) Сначала вам нужно будет установить банку на вашем компьютере, этот SO ответ объясняет это.
2) Добавить зависимости

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>7.4.1-jdbc3</version>
</dependency>
<dependency>
    <groupId>net.sf.squirrel-sql.plugins</groupId>
    <artifactId>netezza</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>org.netezza</groupId>
    <artifactId>netezza</artifactId>
    <version>1.0</version>
</dependency>

3) Пользовательский диалект Netezza Обратите внимание, что это те типы данных, которые были необходимы для моего варианта использования. Для любых дополнительных типов данных вам необходимо добавить их явно.

import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.type.StandardBasicTypes;

@SuppressWarnings("deprecation")
public class NetezzaDialect extends PostgreSQLDialect {
    public NetezzaDialect() {
        registerHibernateType(Types.CHAR, StandardBasicTypes.STRING.getName());
        registerHibernateType(Types.VARCHAR, StandardBasicTypes.STRING.getName());
        registerHibernateType(Types.NVARCHAR,  StandardBasicTypes.STRING.getName());
        registerHibernateType(Types.BIGINT, StandardBasicTypes.LONG.getName());
        registerHibernateType(Types.SMALLINT, StandardBasicTypes.SHORT.getName());
        registerHibernateType(Types.DATE, StandardBasicTypes.DATE.getName());
    }
}

4) Свойства пружинного башмака

# Netezza properties
spring.datasource.url=jdbc:netezza://{host}:{port}/{db/ catalog}
spring.datasource.username=
spring.datasource.password=
spring.jpa.properties.hibernate.dialect=your.org.config.NetezzaDialect
spring.datasource.driver-class-name=org.netezza.Driver
0 голосов
/ 25 июня 2018

Для правильной настройки spring.datasource.url вам также необходимо добавить драйвер Netezza JDBC в путь к классам. Согласно этой статье в Центре знаний IBM , вы должны иметь возможность загрузить клиентские инструменты для подходящей среды:

nz-*client-version.tar.z Установочные пакеты клиента Netezza для поддерживаемого клиента операционные системы. Клиентские пакеты IBM Netezza доступны для общая группа сред операционных систем, таких как:

  • nz-linuxclient-version.tar.gz для Linux на Intel / AMD, включает утилиты командной строки ODBC / JDBC и Netezza
  • ...

В дополнение к этому, вы также должны правильно настроить диалект. Насколько я знаю, Hibernate (поставщик JPA по умолчанию при загрузке Spring) не поддерживает диалект Netazza. Вы можете найти полный список поддерживаемых диалектов на их Javadoc .

Однако, поскольку Netazza основан на PostgreSQL 7.x, вы можете заставить его работать, используя один из диалектов PostgreSQL, хотя есть два замечания:

  1. Hibernate больше не поставляется с диалектом, поддерживающим PostgreSQL 7.x
  2. Netazza не поддерживает обратную совместимость, поэтому может не работать

Итак, чтобы ответить на ваш вопрос, он официально не поддерживается Hibernate, поэтому, вероятно, он не будет работать. Альтернативы:

  1. Написание своего собственного спящего диалекта для Netezza. Это требует некоторой работы, но позволит вам использовать свой диалект для повторного использования в других проектах.
  2. Использование более низкого уровня JdbcTemplate. Это означает, что вам придется работать с самим SQL, и вам, возможно, придется что-то делать самостоятельно.
...