Класс драйвера org hsqldb jdbcdriver не может быть загружен
Spring Boot упрощает работу с различными системами баз данных без хлопот, связанных с ручным управлением зависимостями.
В частности, Spring Data JPA starter предоставляет все функции, необходимые для бесшовной интеграции с несколькими реализациями DataSource .
В этом руководстве мы узнаем, как интегрировать Spring Boot с HSQLDB .
2. Зависимости Maven
Чтобы продемонстрировать, насколько легко интегрировать Spring Boot с HSQLDB, мы создадим простой уровень репозитория JPA, который выполняет операции CRUD с объектами клиентов, используя базу данных HSQLDB в памяти .
Вот стартер Spring Boot, который мы будем использовать для запуска и запуска нашего демонстрационного уровня репозитория:
Обратите внимание, что мы также включили зависимость HSQLDB. Без него Spring Boot попытается автоматически настроить bean-компонент DataSource и пул соединений JDBC для нас через HikariCP.
Как следствие, если мы не укажем допустимую зависимость DataSource в нашем файле pom.xml , мы получим сбой сборки .
Кроме того, обязательно проверьте последнюю версию spring-boot-starter-data-jpa на Maven Central.
3. Подключение к базе данных HSQLDB
Для тестирования нашего демонстрационного уровня репозитория мы будем использовать базу данных в памяти. Однако можно работать и с файловыми базами данных. Мы рассмотрим каждый из этих методов в следующих разделах.
3.1. Запуск внешнего сервера HSQLDB
Давайте посмотрим, как запустить внешний сервер HSQLDB и создать базу данных на основе файлов. В целом установка HSQLDB и запуск сервера несложны.
Вот шаги, которые мы должны выполнить:
- Сначала мы загрузим HSQLDB и разархивируем его в папку
- Поскольку HSQLDB не предоставляет базу данных по умолчанию из коробки, мы создадим базу под названием «testdb» для примера.
- Мы запустим командную строку и перейдем в папку данных HSQLDB.
- В папке с данными мы выполним следующую команду:
- Приведенная выше команда запустит сервер HSQLDB и создаст нашу базу данных, исходные файлы которой будут храниться в папке данных.
- Мы можем убедиться, что база данных действительно создана, перейдя в папку данных , которая должна содержать набор файлов с именами «testdb.lck» , «testdb.log» , «testdb.properties» и «testdb.script» ( количество файлов зависит от типа создаваемой базы данных)
После того, как база данных настроена, нам нужно создать к ней соединение.
Чтобы сделать это в Windows , перейдем в папку bin базы данных и запустим файл runManagerSwing.bat . Это откроет начальный экран HSQLDB Database Manager, где мы можем ввести учетные данные для подключения:
В Linux / Unix / Mac мы можем использовать NetBeans, Eclipse или IntelliJ IDEA для создания подключения к базе данных с помощью визуальных инструментов IDE, используя те же учетные данные.
В любом из этих инструментов просто создать таблицу базы данных, выполнив сценарий SQL в диспетчере баз данных или в среде IDE.
После подключения мы можем создать таблицу клиентов :
Всего за несколько простых шагов мы создали файловую базу данных HSQLDB, содержащую таблицу клиентов .
3.2. Application.properties файла
Если мы хотим подключиться к предыдущей файловой базе данных из Spring Boot, вот настройки, которые мы должны включить в файл application.properties :
В качестве альтернативы, если мы используем базу данных в памяти, мы должны использовать следующее:
Обратите внимание на параметр DB_CLOSE_DELAY = -1, добавленный в конец URL-адреса базы данных. При работе с базой данных в памяти нам нужно указать это, чтобы реализация JPA, которая является Hibernate, не закрывала базу данных во время работы приложения .
4. Клиент Entity
После того, как настройки подключения к базе данных уже настроены, теперь нам нужно определить нашу сущность Customer :
5. Репозиторий клиентов
Кроме того, нам необходимо реализовать тонкий уровень сохраняемости, который позволяет нам иметь базовые функции CRUD для наших сущностей Customer JPA.
Мы можем легко реализовать этот уровень, просто расширив интерфейс CrudRepository :
6. Тестирование клиентского репозитория
Наконец, мы должны убедиться, что Spring Boot действительно может подключаться к HSQLDB. Мы можем легко добиться этого, просто протестировав уровень репозитория.
Давайте начнем тестирование репозитория findById () и FindAll () методы:
Наконец, давайте протестируем метод save () :
7. Заключение
In this article, we learned how to integrate Spring Boot with HSQLDB, and how to use either a file-based or in-memory database in the development of a basic JPA repository layer.
As usual, all the code samples shown in this article are available over on GitHub.
HSQLDB может быть использована в двух разных режимах: серверном (думаю, более привычном для любого разработчика) и в standalone (или in-process) режиме.Серверный режим не будет обсуждаться в этой статье. Кому интересно, вот ссылки на официальную документацию.
В случае in-process режима база данных запускается как часть вашего приложения. Нужно заметить, что при работе в этом режиме вы не сможете подключиться к базе извне непосредственно в момент работы, а также проверять содержимое базы данных и его изменения используя стандартные средства доступа наподобие Database Manager, входящего в поставку базы данных. (В официальной документации рекомендуется использовать серверный режим для разработки, и in-process режим для продакшн).
Таблицы. Помимо временных, не записываемых на диск, и существующих только во время существования объекта Connection, есть 3 типа постоянных таблиц (для версии 1.8):MEMORY, CACHED и TEXT.
MEMORY — тип таблиц по умолчанию. Данные постоянно находятся в памяти, записываются на диск в файл <имя_базы>.script в виде SQL-запроса. Каждый раз при запуске базы данных этот запрос и выполняется. Создаются так CREATE TABLE, или так CREATE MEMORY TABLE. Подходит для маленьких таблиц, критичных ко времени доступа.
CACHED – в памяти находится только часть данных и индексы, сохраняются на диск в файле <имя_базы>.data. Создаются так: CREATE CACHED TABLE. Могут использоваться для больших таблиц. Базе данных требуется меньше времени для старта при загрузке данных из этого типа таблиц, хотя среднее время доступа к данным в таких таблицах будет больше чем к таблицам типа MEMORY.
TEXT – используют в качестве источника данных файлы в формате CSV.
Создание новой базы данных в режиме in-process происходит при попытке подключения к несуществующей по указанному пути базе. При создании нужно указать логин SA и пустой пароль. (В версии 2.0 есть возможность сразу указать новый логин и пароль, который будет создан и наделен всеми правами на новую базу).
Класс драйвера для версии 1.8 — org.hsqldb.jdbcDriver, для версии 2 — org.hsqldb.jdbc.JDBCDriver
При работе с базой важно помнить, что изменения в данных не записываются сразу на диск (независимо от типа таблиц), а сбрасываются периодически, согласно параметру, который можно указать командой в обычном SQL запросе:
— для версии 1.8: SET WRITE_DELAY | | MILLIS> (по умолчанию 20 секунд).
— для версии 2.0: SET FILES WRITE DELAY | | MILLIS> (По умолчанию 10 секунд).
Не рекомендуется выставлять параметр менее 10 секунд, чтобы не тратить ресурсы на постоянный внутренний опрос базы на наличие изменений.
Изменения можно записать на диск и принудительно, с помощью команды «CHECKPOINT». При этом происходит закрытие базы, запись всех даных на диск, дефрагментация (если указано специально с помощью слова DEFRAG) и повторное открытие базы.
Также, после завершения работы с базой ее необходимо закрыть послав SQL запрос «SHUTDOWN”. Если этого не сделать, то та часть изменений которая не была записана на диск после последнего сброса данных будет потеряна. Только после этого можно закрывать объекты Statement и Connection вызовами методов close();
В jar поставку базы данных входит утилита для подключения к базе (и не только HSQLDB) и выполнения SQL запросов, с помощью которой можно проверить содержимое вашей базы. Запускается так:
Загрузка драйвера JDBC, регистрация и выписка, подготовленное Заявление
1. Загрузка и регистрация драйвера JDBC
Эта строка кода используется для загрузки драйвера JDBC и регистрации этого уже загруженного драйвера, но мы не увидели фрагмент кода загрузки и регистрации. Что скрыто за этой строкой кода? Давайте посмотрим на исходный код Java этого класса org.hsqldb.jdbcDriver:
Обратите внимание, что последний фрагмент кода является статическим блоком операторов, который включен статически:
Операционный механизм Java, блок статических операторов - это код, который будет выполняться и выполняться только один раз, когда файл класса этого класса впервые загружается в JVM, поэтому, когда мы используем Class.forName ("org.hsqldb.jdbcDriver"); Когда файл класса загружается в JVM за этой строкой кода, загрузка и создание экземпляра драйвера JDBC были завершены с помощью приведенного выше блока статических операторов, и операция драйвера регистрируется с использованием класса DriverManager.
Во-вторых, заявление, подготовленное государством
Оператор используется для отправки операторов SQL в базу данных, выполнения операторов SQL и возврата результатов.
Когда вам нужно использовать объект Statement несколько раз, более эффективно использовать объект PreparedStatement. Разница между объектом PreparedStatement и объектом Statement состоит в том, что объект PreparedStatement устанавливается с оператором SQL при его создании и создании. Когда оператор SQL, выполненный с использованием объекта PreparedStatement, сначала отправляется в базу данных, оператор SQL будет скомпилирован, поэтому объект PreparedStatement является включением. Объекты, которые были предварительно скомпилированными операторами SQL, поэтому, когда один и тот же оператор SQL выполняется несколько раз, нет необходимости каждый раз компилировать оператор SQL, а непосредственно выполнять уже скомпилированный оператор SQL.
После тестирования кода:
Время, затраченное на использование объекта Statement и PreparedStatement для выполнения одного и того же оператора SQL 1 000 000 раз:
Statement:112406
PreparedStatement:85953
Можно видеть, что эффективность PrepareStatment для выполнения операторов SQL действительно улучшится. Поэтому в повседневной разработке мы предпочитаем использовать подготовленное заявление
Не уверенный, если это стоит чего-нибудь, но у меня была подобная проблема, где я добирался "java.sql. SQLException: Никакой подходящий драйвер не нашел" ошибку. Я нашел этот поток при исследовании решения.
способ, которым я закончил тем, что решил свою проблему, состоял в том, чтобы воздержаться от использования java.sql. DriverManager для получения соединения и вместо этого создал экземпляр org.hsqldb.jdbc.jdbcDataSource и использовал это.
первопричина моей проблемы (я верю) имела отношение к classloader иерархии и тому, что JRE выполнял Java 5. Даже при том, что я мог успешно загрузить jdbcDriver класс, classloader позади java.sql. DriverManager был выше, до такой степени, что он не мог видеть hsqldb.jar, в котором я нуждался.
Так или иначе, просто поместив это примечание здесь в случае, если кто-то еще спотыкается с подобной проблемой.
Я думаю, что Ваш URL HSQL является неправильным. Это должно также включать имя базы данных,
, если mydatabase является названием Вашего DB (файл). Не включая это может (я не быть уверенным, имеет ли это место здесь), путают парсинг URL, который может привести к DriverManagerDS, думая, что Ваш драйвер не подходит (это найдено, но это думает, что это не хорошее)
Могло бы случиться так, что
не может быть разрешен в файл. Посмотрите на пример программы здесь:
HSQLDB Видит, можно ли получить ту работу сначала, и затем видеть, можно ли взять ту конфигурационную информацию и использовать ее в бобовой конфигурации Spring.
Можно ли импортировать драйвер (org.hsqldb.jdbcDriver) в один из исходных файлов? (Для тестирования этого, класс находится на самом деле на пути к классу).
, Если Вы не можете импортировать его затем, Вы могли бы попробовать включая hsqldb.jar в Вашем пути сборки.
Похоже, что Вы не указываете имя базы данных для соединения с, должен пойти что-то как
Если Вы смотрите на свою строку первоначального соединения:
Сверхзвуковые документы предполагают пропавших без вести псевдонима после localhost:
"никакой подходящий драйвер" обычно не означает, что синтаксис для URL соединения является неправильным.
Хорошо, таким образом, вот решение. Большинство все сделали действительно правильные замечания, но ни один не решил проблему (СПАСИБО ЗА справку). Вот решение, которое я нашел для работы.
- банки Перемещения от. /web-inf/lib до PROJECT_ROOT/lib
- Изменяют путь сборки в затмении для отражения этого изменения.
- убранный и восстановленный мой проект.
- запустил junit тест и БУМ, он работал!
Мое предположение - то, что это имело некоторое отношение, как Ganymede читает банки в/web-inf/lib папка. Но кто знает. Это работает теперь.
У меня была та же проблема с пружиной, свободным-городским-населением-dbcp и оракулом 10 г. Используя этот URL я не получил 'подходящий драйвер' ошибка: jdbc:oracle:[email protected]:1521:kinangop
вышеупомянутый URL пропускает полное двоеточие незадолго до. После исправления этого исчезла ошибка.
Чтобы HSQLDB регистрировался, вам необходимо получить доступ к его классу jdbcDriver. Вы можете сделать это так же, как в примере .
Узнайте, как использовать HSQLDB в слое сохранения JPA приложения Spring Boot.
1. Обзор
Spring Boot позволяет действительно легко работать с различными системами баз данных, без хлопот ручного управления зависимостями.
Более конкретно, Spring Data JPA starter предоставляет все функциональные возможности, необходимые для бесшовной интеграции с несколькими реализациями DataSource .
В этом уроке мы узнаем, как интегрировать Spring Boot с HSQLDB .
2. Зависимости Maven
Чтобы продемонстрировать, насколько легко интегрировать Spring Boot с HSQLDB, мы создадим простой уровень репозитория JPA, который выполняет операции CRUD с объектами клиентов, используя базу данных HSQLDB в памяти .
Вот стартер весенней загрузки, который мы будем использовать для запуска и запуска нашего слоя хранилища образцов:
Обратите внимание, что мы также включили зависимость HSQLDB . Без этого Spring Boot попытается автоматически настроить источник данных bean и пул соединений JDBC для нас через ХикариКП .
Как следствие, если мы не указываем допустимую зависимость источника данных в вашем pom.xml файл, мы получим сбой сборки .
Кроме того, давайте обязательно проверим последнюю версию spring-boot-starter-data-jpa на Maven Central.
3. Подключение к базе данных HSQLDB
Для реализации нашего демонстрационного уровня репозитория мы будем использовать базу данных в памяти. Однако можно также работать с базами данных на основе файлов. Мы рассмотрим каждый из этих методов в следующих разделах.
3.1. Запуск внешнего сервера HSQLDB
Давайте рассмотрим, как запустить внешний сервер HSQLDB и создать файловую базу данных. Установка HSQLDB и запуск сервера в целом просты.
Вот шаги, которым мы должны следовать:
В папке data мы выполним следующую команду:
После того, как база данных настроена, нам нужно создать соединение с ней.
Чтобы сделать это в Windows , давайте перейдем в папку базы данных bin и запустим файл runManagerSwing.bat . Это откроет начальный экран менеджера баз данных HSQLDB, на котором мы сможем ввести учетные данные для подключения:
В Linux/Unix/Mac мы можем использовать NetBeans , Eclipse или IntelliJ IDEA для создания подключения к базе данных с помощью визуальных инструментов IDE, используя те же учетные данные.
В любом из этих инструментов легко создать таблицу базы данных, выполнив сценарий SQL в диспетчере баз данных или в среде IDE.
После подключения мы можем создать таблицу customers :
Всего за несколько простых шагов мы создали файловую базу данных HSQLDB, содержащую таблицу customers .
3.2. Файл application.properties
Если мы хотим подключиться к предыдущей файловой базе данных из Spring Boot, вот параметры, которые мы должны включить в файл application.properties :
В качестве альтернативы, если мы используем базу данных в памяти, мы должны использовать следующие:
Обратите внимание на параметр DB_CLOSE_DELAY=-1 , добавленный в конец URL-адреса базы данных. При работе с базой данных в памяти нам нужно указать это, чтобы реализация JPA, которая находится в спящем режиме, не закрывала базу данных во время работы приложения .
4. Организация-Заказчик
Поскольку параметры подключения к базе данных уже настроены, далее нам нужно определить наш Клиент объект:
5. Клиентский Репозиторий
Кроме того, нам необходимо реализовать тонкий слой персистентности, который позволяет нам иметь базовую функциональность CRUD на наших объектах Customer JPA.
Мы можем легко реализовать этот слой, просто расширив интерфейс CrudRepository :
6. Тестирование репозитория Клиентов
Наконец, мы должны убедиться, что Spring Boot действительно может подключиться к HSQLDB. Мы можем легко достичь этого, просто протестировав уровень репозитория.
Давайте начнем тестировать методы репозитория findById() и findAll() :
Наконец, давайте протестируем метод save() :
7. Заключение
В этой статье мы узнали, как интегрировать Spring Boot с HSQLDB, и как использовать базу данных на основе файлов или в памяти при разработке базового уровня репозитория JPA.
Как обычно, все примеры кода, показанные в этой статье, доступны на GitHub .
Читайте также: