Рубрики
Без рубрики

Введение в ActiveJDBC

Давайте взглянем на ActiveJDBC, легкий ORM с другим подходом к другим популярным реализациям Java.

Автор оригинала: baeldung.

1. введение

ActiveJDBC-это легкий ORM , следующий основным идеям ActiveRecord , основной ФОРМЫ Ruby on Rails.

Он фокусируется на упрощении взаимодействия с базами данных путем удаления дополнительного уровня типичных менеджеров сохраняемости и фокусируется на использовании SQL, а не на создании нового языка запросов.

Кроме того, он предоставляет свой собственный способ написания модульных тестов для взаимодействия с базой данных через класс DB Spec .

Давайте посмотрим, чем эта библиотека отличается от других популярных Java ORM и как ее использовать.

2. ActiveJDBC против других форм

ActiveJDBC имеет существенные отличия по сравнению с большинством других Java ORM. Он выводит параметры схемы БД из базы данных, тем самым устраняя необходимость сопоставления сущностей с базовыми таблицами.

Никаких сеансов, никаких менеджеров сохраняемости , нет необходимости изучать новый язык запросов, никаких геттеров/сеттеров. Сама библиотека легка с точки зрения размера и количества зависимостей.

Эта реализация поощряет использование тестовых баз данных, которые очищаются платформой после выполнения тестов, что снижает затраты на обслуживание тестовых баз данных.

Однако каждый раз, когда мы создаем или обновляем модель, необходим небольшой дополнительный шаг instrumentation . Мы обсудим это в следующих разделах.

3. Принципы проектирования

  • Выводит метаданные из БД
  • Конфигурация на основе конвенций
  • Никаких сеансов, никаких “прикреплений, повторных прикреплений”
  • Легкие модели, простые POJOs
  • Нет проксирования
  • Избегание анемичной модели домена
  • Нет необходимости в DAOS и DTOs

4. Настройка библиотеки

Типичная настройка Maven для работы с базой данных MySQL включает в себя:


    org.javalite
    activejdbc
    1.4.13


    mysql
    mysql-connector-java
    5.1.34

Последнюю версию артефактов activejdbc и mysql connector можно найти в центральном репозитории Maven.

Приборы это цена упрощения и необходима при работе с проектами ActiveJDBC.

Существует плагин инструментирования, который необходимо настроить в проекте:


    org.javalite
    activejdbc-instrumentation
    1.4.13
    
        
            process-classes
            
                instrument
            
        
    

Последний плагин activejdbc-instrumentation также можно найти в Maven Central.

И теперь мы можем обрабатывать инструменты, выполняя одну из этих двух команд:

mvn process-classes
mvn activejdbc-instrumentation:instrument

5. Использование ActiveJDBC

5.1. Модель

Мы можем создать простую модель всего с одной строкой кода – это включает в себя расширение класса Model .

Библиотека использует флексии английского языка для преобразования форм множественного и единственного числа существительных. Это можно переопределить с помощью аннотации @Table .

Давайте посмотрим, как выглядит простая модель:

import org.javalite.activejdbc.Model;

public class Employee extends Model {}

5.2. Подключение к базе данных

Для подключения к базам данных предусмотрены два класса – Base и DB– .

Самый простой способ подключения к базе данных-это:

Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://host/organization", "user", "xxxxx");

Когда модели работают, они используют соединение, найденное в текущем потоке. Это соединение устанавливается в локальном потоке классом Base или DB перед любой операцией с БД.

Описанный выше подход позволяет создать более сжатый API, устраняя необходимость в менеджерах сеансов БД или сохраняемости, как в других Java ORM.

Давайте посмотрим, как использовать класс DB для подключения к базе данных :

new DB("default").open(
  "com.mysql.jdbc.Driver", 
  "jdbc:mysql://localhost/dbname", 
  "root", 
  "XXXXXX");

Если мы посмотрим, как по-разному Base и DB используются для подключения к базам данных, это поможет нам сделать вывод, что Base следует использовать при работе с одной базой данных и DB следует использовать с несколькими базами данных.

5.3. Вставка записи

Добавление записи в базу данных очень просто. Как уже упоминалось ранее, нет необходимости в сеттерах и геттерах:

Employee e = new Employee();
e.set("first_name", "Hugo");
e.set("last_name", "Choi");
e.saveIt();

В качестве альтернативы мы можем добавить ту же запись таким образом:

Employee employee = new Employee("Hugo","Choi");
employee.saveIt();

Или даже бегло:

new Employee()
 .set("first_name", "Hugo", "last_name", "Choi")
 .saveIt();

5.4. Обновление записи

В приведенном ниже фрагменте показано, как обновить запись:

Employee employee = Employee.findFirst("first_name = ?", "Hugo");
employee
  .set("last_name","Choi")
  .saveIt();

5.5. Удаление записи

Employee e = Employee.findFirst("first_name = ?", "Hugo");
e.delete();

Если есть необходимость удалить все записи:

Employee.deleteAll();

Если мы хотим удалить запись из главной таблицы, которая каскадируется в дочерние таблицы, используйте delete Cascade :

Employee employee = Employee.findFirst("first_name = ?","Hugo");
employee.deleteCascade();

5.6. Извлечение записи

Давайте выберем одну запись из базы данных:

Employee e = Employee.findFirst("first_name = ?", "Hugo");

Если мы хотим получить несколько записей, мы можем использовать метод where :

List employees = Employee.where("first_name = ?", "Hugo");

6. Поддержка Транзакций

На форумах Java есть явное соединение или объект диспетчера (EntityManager в JPA, менеджер сеансов в Hibernate и т. Д.). В ActiveJDBC такого нет.

Вызов Base.open() открывает соединение, присоединяет его к текущему потоку и, таким образом, все последующие методы всех моделей повторно используют это соединение. Вызов Base.close() закрывает соединение и удаляет его из текущего потока.

Для управления транзакциями существует несколько удобных вызовов:

Начало транзакции:

Base.openTransaction();

Совершение транзакции:

Base.commitTransaction();

Откат транзакции:

Base.rollbackTransaction();

7. Поддерживаемые базы данных

Последняя версия поддерживает базы данных типа SQLServer, MySQL, Oracle, PostgreSQL, H2, SQLite3, DB2.

8. Заключение

В этом кратком руководстве мы сосредоточились на самых основах ActiveJDBC и изучили их.

Как всегда, исходный код, связанный с этой статьей, можно найти на Github .