Нераскрытый
3.48.0
- Исправление новой функции JFR, которая не работает на некоторых JDK (#2736)
3.47.0
- spring aot: исправление
@JdbiRepository
, чтобы генерация AOT работала (#2727, спасибо @hpoettker!)
- spring/spring5: обновление зависимости Spring и тестов до последних версий (dependabot #36 / CVE-2024-38820 требует Yöntem 5.3.41, но эта версия ещё не выпущена (также не выпущена 5.3.40. В Spring полный беспорядок))
- Отклонение модуля spring5, так как Spring Framework 5.x больше не находится под открытой поддержкой
- Добавление нового модуля
spring
, который будет сосредоточен на Spring Framework 6.x и выше. В настоящее время это тот же код, что и в spring5, но теперь не требуется поддержка обратной совместимости с Spring Framework 5.x.
3.46.0
- Введение поддержки JDK Flight Recorder и OpenTelemetry
- geantyref 2.0.0
- sqlite: исправление использования памяти баз данных SQLite между различными соединениями (#2688)
3.45.4
- Предотвращение мёртвых locks при получении соединения (#2686, спасибо @mhib!)
3.45.3
- Исправление метода Connection.close() при настройке соединения через JdbiPlugin (#2676)
- Исправление множественного коммита при использовании автоматического режима заключения транзакций (#2685, спасибо @mhib!)
3.45.2
- Перемещение модуля oracle12 обратно в основное сборочное дерево (#2664, спасибо @stoyants!)
- Вызов ошибки UnableToCreateStatementException, если отсутствует позиционный параметр (#2675, спасибо @angusholder!)
3.45.1
- Обход проблемы JDK-8320575, связанной с потерей информации типа generics конструктора записи
- Улучшение обнаружения типов generics конструкторами записей для обхода проблемы JDK-8320575 (#2648, спасибо @elonazoulay!)
- Попытка улучшить производительность ConstructorMapper за счет кэширования MethodHandles конструкторов (#2657, спасибо @elonazoulay!)
3.45.0
- Поддержка Testcontainer для DB2 (#2625, спасибо @stoyants)
- Создание файлов SBOM CycloneDX для выпусков версий
- Делаем сборки воспроизводимыми
- Добавление метода
JdbiTestContainersExtension#setShutdownWaitTime(int)
для контроля времени ожидания завершения расширения, если база данных очень медленная. Адресует проблему #2629 (спасибо @stoyants).
- Обновление документации
3.44.1
- Новая функция
@Definition
также поддерживает определения супер-интерфейсов
3.44.0
- Новая функция: аннотация типов, методов или полей как
@Definition
для определения вычисляемых констант
- Исправление граничного случая, когда вызов
Connection#commit()
выбрасывал исключение, мы снова вызывали commit()
. Теперь код явно вызывает Connection#rollback()
. Исправляет проблему #2595
- FieldMapper: пропуск статических полей (#2607, сообщено @mvysny)
- Исправление ошибки переполнения стека при встрече рекурсивных типов, таких как
<T extends This<T>>
(#2582, сообщено @johnarrr)
3.43.0
ПОТЕНЦИАЛЬНАЯ КРИТИЧЕСКАЯ ИЗМЕНЕНИЕ
С версией 3.43.0, мы улучшили поддержку вызова хранимых процедур через Call, особенно возвращение наборов результатов.
Как любой объект, полученный из Statement, ожидалось, что код будет использовать все результаты (будь то "обычный" набор результатов или результат хранимой процедуры) перед закрытием Statement.
Однако ранее Jdbi не контролировал это — OutParameters можно было использовать после закрытия Call, из которого они были получены.
Поэтому вы можете заметить новые исключения при попытках использовать OutParameters после закрытия Call, из которого они были получены.
См.: https://github.com/jdbi/jdbi/issues/2592
- Поддержка вложения типов строк в Java
Optional
или vavr Option
(сообщено @martyn0ff, #2558)
- Окончательное прекращение попыток догадаться о парсинге скриптов SQL и добавление переключателя для управления удалением лишних точек с запятой. Ещё одна попытка решить проблему парсинга SQL скриптов (сообщено @IrinaTerlizhenko, #2554).
- Добавление нового модуля
integration-test
для тестов, требующих различных частей кодовой базы. Должен использоваться для написания тестовых случаев для расследования проблем.
- Поддержка значения
null
для привязки объектов бинов, методов, полей и POJO (предложено @xak2000 в #2562)
- Добавление поддержки Testcontainers для MS SQLServer
- Поддержка возврата
ResultSet
из операторов Call для баз данных, которые не поддерживают параметры курсора. (предложено в #2557 @metaforte и @0x1F528 в #2546)
- Поддержка значений
int
, long
, short
, double
и float
для выходных параметров.
3.42.0
- Добавление Spring Jdbi репозиториев с помощью
@EnableJdbiRepositories
, спасибо @xfredk (#2528, #2544)
- Поддержка Kotlin корутинного контекста. (#2524) - Предложено @anderssv на списке рассылки
- Переход с Kotlin 1.5 на 1.6, так как 1.5 устарел и будет удален.
- Добавление поддержки аргументов функций, аналогично аргументам Consumer, для SQL объектов (#2326)
- Исправление предупреждений устаревших Kotlin (@2511) - Спасибо @lwach-allegro за внесение предложения
- Лексический анализатор (#2520), что должно исправить все проблемы с именами идентификаторов (исправляются #2481, #2499 и #2510)
- Корректное исправление создания Handle (#2541)
- Исправление использования аргументов Vavr в SqlObjects (сообщено @diversit, #2529)
- Исправление парсинга скрипта MySQL (сообщено @IrinaTerlizhenko, #2535)
- Добавление написанной политики безопасности. - Отклонение поддержки
otjPostgres
в jdbi-testing. Это будет отключено, если они выпустят версию, предоставляющую автоматическое модульное имя для JPMS, иначе это будет удалено, когда Jdbi выпустит полную поддержку JPMS.
- Восстановление поведения до 3.41.0 для обработчиков, использующих auto-commit == false, где транзакции не требуют
Handle#begin()
перед Handle#commit()
(#2491, спасибо @grigorem)
- Начало специального модуля для MySQL. В данный момент это только тесты.
- Исправление генерации javadoc для сборки javadoc Java 11 (не Java 8 + исправления)
3.41.1
- Поддержка
.
и -
как частей имени именованного параметра. (#2471)
- Исправление неправильной попытки отката транзакции после выброса исключения после коммита (#2478)
3.41.0
- Исправление утечки соединения, если Handle выбрасывает исключение в конструкторе (#2446). Спасибо @kristoffSC
- Обновление примеров кода в документации
- Удаление всех аннотаций spotbugs, замена на jakarta (#2456)
- Переименование "Handler" на "HandleCallbackDecorator", помеченное как
@Alpha
(#2460)
3.40.0
- Добавление точки входа для декорирования с помощью withHandle и друзей (#2448)
- Исправление проблемы конструктора PreparedBatch, где контекст привязки был некорректно установлен (#2404)
- Небольшая оптимизация памяти для RowMappers и ColumnMappers findFor (#2418)
- Реализации JsonMapper теперь привязывают тип раньше, что экономит работу в Jackson и Gson (#2420)
- Улучшение производительности для всех реализаций ExtensionConfigurer (#2416, #2424)
- Удаление аннотаций JSR 305 из кодовой базы Jdbi, один маленький шаг к JPMS (#2408)
- Удаление ненужных тестов перед добавлением стандартных методов в объекты расширения (#2414)
- Обновление H2 до 2.2.220 (#2428)
- Некоторые небольшие улучшения производительности (#2436, #2437, #2440)
- Улучшение производительности генератора (#2439)
3.39.1
3.39.x является последним выпуском Jdbi, поддерживающим Java 8. Java 8 давно устарела, и нагрузка на поддержку её в Jdbi увеличивается, поскольку части нашего инструментария и библиотек уже не поддерживают её. Мы намерены делать периодические исправления для значительных багов или проблем безопасности, но активное развитие прекращено.
-
Добавление метода Extensions#failFast()
для включения объектов расширения с неправильно настроенными методами, которые должны провалиться при первом доступе. По умолчанию объекты расширения будут провалиться при первом доступе к неправильно настроенному методу.
-
Добавление нового кастомного аннотирования @RegisterCollector
(#2377)
-
Верное возвращение null для OutParameters, когда вызываемая процедура возвращает NULL.
-
Промotion из @Beta
в стабильную версию (нет функциональных изменений, некоторые изменения в документации и добавления)
- Аннотации
JdbiProperty
, DatabaseValue
, PropagateNull
, GenerateSqlObject
-
NamedArgumentFinder
, SetObjectArgumentFactory
, GetObjectColumnMapperFactory
, GenericMapMapperFactory
, RowViewMapper
- Конфигурация объекта
MapMappers
- Функциональность
ConfigCache
- Методы
SqlStatementCustomizer#warm()
и SqlStatementParameterCustomizer#warm()
- Шаблонные движки
- Поддержка JSON Moshi
-
Промotion из @Alpha
в @Beta
(нет функциональных изменений, чистка документации)
- Функциональность Codec
- Метод
BaseStatement#attachToHandleForCleanup()
- Поддержка PostGIS
3.39.0
- не использовать. Функционально эквивалентен 3.39.1, но без некоторых тестов и промotions уровня
@Alpha/@Beta
. Предпочтительно использовать 3.39.1
3.38.3
- позволяющее использование неизвестных мапперов результатов во время тепловой подготовки
ResultReturner
. Это восстанавливает пред-3.38.0 поведение,
где SQLObject классы с недействительными методами могли использоваться, пока метод не был явно вызван (#2342)
- документация несовместимости vavr между 0.10.x и 1.0.0-alpha (#2350)
- улучшение исключения, выбрасываемого при восстановлении изоляции транзакции в Handle.inTransaction (#2343)
- добавление поддержки Guice 6.x (используя аннотации javax.inject) и Guice 7.x (используя аннотации jakarta.inject)
3.38.2
- spring5 JdbiUtil: исправление потока работы (#2341)
3.38.1
- Значительное улучшение производительности при копировании конфигурационных объектов при создании операторов
Должно снизить темпы аллокации и время, затраченное на инициализацию ConcurrentHashMap# 3.38.0
-
CaseStrategy
теперь является официальным API (убрано @Beta) (#2309)
- переписана
AccessibleObjectStrategy
в виде перечня значений (#2310)
- возможность использования пользовательских функций для отображения сообщений (#2311)
- исправлена проблема создания
GenericType
в параметризованных классах (#2305)
- добавлен метод
SqlStatements#setAttachAllStatementsForCleanup
. Установка этого флага конфигурации привязывает все созданные заявки к их обработчикам для очистки ресурсов. По умолчанию значение равно false
. (#2293, спасибо @jodastephen)
- добавлен метод
SqlStatements#setAttachCallbackStatementsForCleanup
. Установка этого флага конфигурации привязывает все созданные заявки внутри одного из методов обратного вызова Jdbi
к обработчику. Это позволяет коду, использующему методы обратного вызова Jdbi
, делегировать управление ресурсами полностью Jdbi
. Этот флаг установлен по умолчанию. (#2293, спасибо @jodastephen)
- исправлена проблема при использовании jdbi bom в проектах Spring (#2295, спасибо @jedvardsson)
- добавлен
JdbiExecutor
для асинхронных операций с Jdbi
(#2280, спасибо @leblonk)
- переписана основная расширяемая система, перемещены функциональные возможности из sqlobject в основной модуль
- переписаны sqlobject и генератор для использования новой системы расширений, устарели функциональные возможности, перемещенные в основной модуль
- движок StringTemplate: обработка ошибок st4 вместо логирования в stderr. Возможность конфигурирования отсутствия атрибута как критической ошибки
- StringTemplate 4.3.4
- обновлено зависимое ядро Spring до версии 5.3.27 (устранение уязвимостей CVE-2023-20861, CVE-2023-20863)
- методы ResultIterable:
set()
, collectToMap()
, toCollection()
, collectInto()
, collectIntoList()
, collectIntoSet()
- помощники для упрощенного регистрации CollectorFactory
- движок FreemarkerEngine поощряет использование единого экземпляра для лучшего кэширования
- поддержка Consumer<Iterable> как аргумента потребителя для операций, возвращающих несколько результатов
3.37.1
- исправлена мертвую блокировку в стандартном кеше Jdbi (#2274)
3.37.0
** НЕЛЬЗYO ИСПОЛЬЗOВAТЬ **
Стандартный кеш содержит мертвую блокировку при вытеснении кеша,
когда новые записи добавляются через несколько потоков. Это было
исправлено в версии 3.37.1
- обновлено до geantyref 1.3.14
- удалено ядро зависимости на библиотеку caffeine. Теперь используется простой кеш LRU для парсеров SQL и заявлений SQL.
- добавлен плагируемый кеш реализация, использующий caffeine. Прошлое поведение кеширования можно восстановить, используя зависимость
jdbi3-caffeine-cache
и добавив jdbi.installPlugin(new CaffeineCachePlugin());
.
- добавлен плагируемый нулевой кеш реализация для тестирования и отладки
- улучшено обработывание пустых значений в PostGIS (#2260, спасибо @tprebs)
- использование Postgres 15 (native arm64) для сборки на MacOS arm64
3.36.0
- исправлена проблема конкурентного доступа при копировании реестра конфигураций (#2236), спасибо @npetryk
- Поддержка уровня класса (статического) полей экземпляров для JdbiExtension и его подклассов.
- Добавлена поддержка jdbi3-testing для баз данных, основанной на TestContainers, см. http://jdbi.org/#_using_testcontainers для подробностей
3.35.0
- Исправлена работа
JdbiFlywayMigration
с Flyway 9 (#2179, спасибо @broccolai)
- Добавлены новые вспомогательные методы
useIterator
и withIterator
для закрытия ресурсов итератора
- добавлен анализ утечек ресурсов во всех юнит-тестах, исправлены тесты для предотвращения утечки ресурсов
- добавлена поддержка анализа утечек ресурсов в JUnit5 тестовой среде
JdbiExtension
- добавлена поддержка слушателей жизненного цикла для
Handle
и StatementContext
- исправления и обновления в системе сборки, дополнительная документация для участников, поддержка стилей кода IDE для IntelliJ и Eclipse
- обновления документации для Kotlin кода
- добавлен расширитель функции
mapTo(KClass<*>)
для ResultBearing
- SqlObject Consumer теперь принимает формы Consumer<Stream> и Consumer<Iterator>
- устарела неверно названная метод
setTransactionIsolation
, добавлен метод setTransactionIsolationLevel
для обработчика
- устарела неверно названная метод
release
, добавлен метод releaseSavepoint
для обработчика
- добавлен недостающий метод
isInTransaction
для Transactional
, что привело к совпадению с набором методов обработчика
- добавлены методы строки опции, пользователя и пароля для
JdbiH2Extension
- добавлено
accessibleObjectStrategy
для ReflectionMappers для пропуска вызова setAccessible
для FieldMapper
в частности
- минимальная поддержка тестирования с другими базами данных в
JdbiGenericExtension
- Предупреждения Dependabot для Postgres и H2, обновлено до 42.5.1 и 2.1.214 соответственно.
3.34.0
-
jdbi3-generator
теперь поддерживает любую версию Java 8+ без генерации предупреждений компиляции (#2128)
- AbstractArgumentFactory также проверяет супертайпы, когда обобщенный аргумент не является классом (фиксирует #2026)
- Заменил
@Unmappable
на @JdbiProperty
для более гибкого конфигурирования как отображения, так и привязки
3.33.0 - Добавлено использование @Unmappable
для полей FieldMapper
и свойств KotlinMapper
- Переработана логика отображения для всех мапперов, связанных с объектами (Bean, Field, Constructor, KotlinMapper)
- Уточнено логическое значение
@PropagateNull
, обеспечено корректное функционирование с вложенными объектами
- Обеспечено корректное функционирование аннотаций маппера объекта с классами lombok value и bean
- Добавлена явная поддержка преобразования
byte[]
-> BYTEA
для Postgres. (#2109)
- Отменены изменения лексера #1906 из-за регрессий
- Добавлены недостающие зависимости jdbi3-postgis и jdbi3-json (тесты) в BOM
- Обновлено оборудование сборки для Java и Kotlin
- Внутренние пакеты Kotlin считаются недокументированными и больше не показываются в документации
- Маппер объекта теперь предпочитает аннотации сеттеров над аннотациями геттеров. (#2103)
- Различные методы, принимающие SQL-запросы, теперь предпочитают тип
CharSequence
перед типом String
(#2047)
- Добавлен безопасный класс
Sql
для SQL-запросов.
- Обновлен драйвер Postgres до 42.5.0
- Правильно вызывается метод
warm()
для SqlStatementCustomizer
(#2040)
3.32.0
- Используется экосистема Kotlin 1.7 (компилятор, плагин), но скомпилировано для совместимости с Kotlin 1.5
- Добавлена поддержка типов данных Eclipse LocationTech JTS с PostGIS. (#2072, #2074, благодарим @bchapuis)
- Исправлена ошибка исключения в
Handle#close()
, когда базовое соединение закрыто (#2065)
- Доступ к количеству изменений строк на каждую партию (#2069, #2060, благодарим @doppelrittberger)
- Начата новая модульная структура примеров для JDBI3.
3.31.0
- Добавлена поддержка параметров типа
CharSequence
(#2057, благодарим @sman-81)
- Исправлены SQL-скрипты для поддержки вложенных скриптов BEGIN / END (#2021, благодарим @sman- Yöntem)
- Добавлены удобные методы
forEachWithCount
и filter
для ResultIterables
(#2056, благодарим @sman-81)
- Обновлено оборудование сборки для поддержки внешних модулей. Это позволяет поддерживать актуальность модуля
jdbi3-oracle12
.
3.30.0
- Исправлена ошибка лексера
DefinedAttributeTemplateEngine
, которая проглатывала одинарно защищённый текст с escape (#1906)
- ANTLR 4.10.1
- Gson 2.9.0, устранение уязвимости CVE-2022-25647
- Spring 5.3.20, устранение уязвимости CVE-2022-22965
- Промоция NOP TemplateEngine к классу
NoTemplateEngine
для использования с @UseTemplateEngine
3.29.0
Эта версия представляет собой обслуживание. Она увеличивает минорную версию из-за обратно несовместимого изменения
в JdbiOtjPostgresExtension
из-за изменения в компоненте otj-pg-embedded
.
Если вы не используете этот компонент, нет существенных изменений относительно 3.28.0.
- сборка теперь полностью поддерживает сборку с JDK 17
- небольшие изменения и чистка (#2020, #2023)
- всегда загружается плагин Kotlin, если используется
kotlin-sqlobject
(#2023)
- изменение BOM для решения версий в выпущенной версии BOM
- обновление до
otj-pg-embedded
1.0.1 (0.13.x начал крашиться на MacOS Monterey). Это обратно несовместимое изменение, поскольку компонент изменил сигнатуру вызова getJdbcUrl
. Это затрагивает только JdbiOtjPostgresExtension
3.28.0
- удалена зависимость
antlr4-runtime
путём её инлайнирования в основной jar.
- [CI] добавлены проверки lgtm
- [CI] сборка интеграционных тестов для инлайнированного jar
- [Безопасность] обновлены базовые зависимости для известных CVE (сообщено dependabot)
3.27.2
- Исправлена NPE в
SqlLogger#logAfterExecution
, когда строка запроса недоступна (#2000), благодарим @tmichel!
3.27.1
- Исправлена проблема Batch binding с сериализуемыми повторными попытками транзакций (#1967), благодарим @sudharsannr!
3.27.0
- Исправлена серьёзная регрессия в 3.26.1: некорректное Batch параметрирование
3.26.1
** НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ **
Серьёзная регрессия в batch binding: https://github.com/jdbi/jdbi/issues/1987
- Исправлена работа обратных вызовов транзакций с вложенными транзакциями
3.26.0
- Изменены целевые аннотации для Kotlin аннотаций на
CLASS
(фиксирует #1971)
- Используется h2 2.x для юнит-тестов (предотвращает случайные "безопасные" отчеты)
- выполнены более широкие интеграционные тесты для postgres и совместимости зависимостей
3.25.0
-
Изменение SPI:
@Json String
базовые типы мапперов теперь используют @EncodedJson String
вместо (#1953)
-
Sql4JSqlLogger
: исправлена NPE при использовании скрипта
- исправлена работа
ConstructorMapper
на пустых сгенерированных ключах (#1955)
- добавлены новые обратные вызовы после завершения транзакции для
Handle
: afterCommit
и afterRollback
3.24.1
- исправлена потеря типа аргумента свойства объекта в общих объектах
3.24.0
- Исправлена проблема batch binding с примитивами разных типов (#1901)
- Добавлен метод
Arguments.setPreparedArgumentsEnabled
для отключения нового функционала подготовки аргументов
- Добавлена поддержка JUnit 5 в тестовом пакете.
- Добавлены интерцепторы для вывода типов для Row Mappers, Column Mappers и SQL Array типов
- Исправлена проблема поиска мапперов для Kotlin типов. Убедитесь, что зарегистрированные префиксы используются. Исправляет #1944
-
RowMappers#register(RowMapper<?>)
больше не позволяет использовать Object
как конкретный параметр типа.
- Выполнение ktlint и detekt на Kotlin коде для улучшения качества кода
3.23.0
- Переработка и документация импортируемых привязок в модулях определения Guice
- экспонировать метод
createKey()
в модулях определения Guice
- Добавить пустую реализацию
GuiceJdbiCustomizer
- Исправление наследования аннотаций для непрямых супертайпов (#1920)
3.22.0
- Поддержка Guice для создания и внедрения Jdbi (#1888)
- исправления документации
- обновление CI для сборки с использованием JDK после версии 11 (текущая версия 16)
3.21.0
- Исправление отправки типов Long как INT8 вместо INT4 (#1902)
- Обновления в процессах сборки и компиляции (например, правильное обработание параметров/_NOPARAMETERS)
- Добавление локальной двоичной версии mvnw для сборки без установки Maven
- Обновления документации и исправления развертывания (работает снова документация на Kotlin)
- Добавление метаданных API для доступа к информации базы данных через объект
Handle
(#1889)# 3.20.1
- Разрешение установки PostgresPlugin без неквалифицированных привязок HStore (#1875)
- Обновление Kotlin до версии 1.5.0
- Обновление зависимости Caffeine до версии 3.0.2
- Добавление недостающей jdbi3-spring5 в JDBI bom
- Мелкие исправления кода
3.20.0
- Приведение API LOB PostgreSQL к стабильному состоянию.
- Приведение API JSON, Jackson и Gson к стабильному состоянию.
- Реальное развертывание артефактов Spring5...
- Новый хук инициализации RowMapper и ColumnMapper
3.19.0
Примечание о совместимости Java8!
- Jdbi теперь требует Java 11+ для сборки (все еще работает на 8, пока что...)
- обновление зависимости Caffeine до версии 3.0.1 для jdk16 (ЗАМЕЧАНИЕ: пользователи Java8 должны будут самостоятельно управлять зависимостью обратно до версий 2.x)
Поддержка Spring 4 объявлена устаревшей из-за прекращения поддержки вверх по цепочке (это последний выпуск!). Пожалуйста, переходите на Spring 5
- Простая реализация SqlLogger на основе slf4j для отладки всех выполненных запросов
- новый TransactionHandler RollbackOnlyTransactionHandler для тестирования, который откатывает все изменения
- добавлена поддержка Moshi для JSON-маппинга (#1809, спасибо unoexperto!)
- регистрация дополнительных массивных типов, таких как boolean, #1802
- добавлен Codec (объединение ArgumentFactory и ColumnMapper) для предоставления единого API сериализации/десериализации.
- добавлен новый @Alpha аннотация для совсем новых, но ещё нестабильных возможностей
- Приведение нескольких бета-API к стабильному состоянию.
3.18.1
- Комментарии типа -- и // теперь распознаются и игнорируются в SQL, благодаря @rherrmann!
- ANTLR 4.9
3.18.0
- Теперь коллекция результатов принимает ? super T шаблон
3.17.0
- Поддержка @BindPojo для свойств, которые могут различаться в общих POJO
- вынесение кеша TemplateEngine в SqlStatements для предотвращения бесконтрольного использования памяти при работе с динамическим SQL
- новое бета-интерфейс TemplateEngine.Parsing для пользовательских движков шаблонов, желающих использовать встроенный кеш
3.16.0
- Поддержка декораторов SqlObject (@Transaction и других) для типов
3.15.1
- Исправление ошибки связи при использовании ConfigRegistry в средах с несколькими загрузчиками классов
3.15.0
- Ощутимые улучшения производительности для нагрузок с большим объемом данных
- новый @Beta метод warm() на Handler, SqlStatement*Customizer для предварительной инициализации экземпляров конфигураций
- новые перегрузки bind() для UUID и URI, см. #1765
3.14.5
- Исправление проблемы вставки постоянного значения NULL в SqlBatch, см. #1761
3.14.4
- Исправление регрессии производительности при подготовке запросов, см. #1732
3.14.3
- Исправление предупреждения о утечках ThreadLocal для Tomcat
- Аннотация AnnotationFactory: попытка использовать загрузчик классов текущего класса перед использованием TCCL
3.14.2
- Документация FreeBuilder
- jpa: NullPointerException при десериализации только для чтения свойств
3.14.1
- Исправление поиска классов-билдеров для FreeBuilders
3.14.0
- Поддержка getter с аннотацией @ColumnName для immutable, см. #1704
- простая поддержка CRUD для LargeObject API в PostgreSQL
- исправление объявления пакета RegisterKotlinMappers в kotlin-sqlobject
- LocalTransactionHandler: более тесная привязка к Handle для повышения производительности и предотвращения утечек
- Добавление метода "one"
- Исправление повторной привязки итерируемых типов, см. #1686
- Первичная поддержка POJO на основе FreeBuilders
3.13.0
- Kotlin: учет значений по умолчанию в методах при передаче null, см. #1690
- Arguments.bindingNullToPrimitivesPermitted помогает вам зафиксировать
неверную привязку null к примитивному типу
- подготовляемые Arguments: перезапуск prepare для каждого копируемого аргумента, чтобы распространять обновленную конфигурацию
3.12.2
- Игнорирование методов-получателей с параметрами в привязке объектов
- Поиск метода установки билдера даже при наличии аннотации @ColumnName
- Установка ограничения по умолчанию в 1000 парсированных заявлений для CachingSqlParser, см. #1658
- Изменение BOM для предотвращения наследования от родителя, см. #1656
- Улучшение детектирования неполных типов с диквалификаторами
3.12.0
-
EnumSet
может быть связан и отображен как битовая строка в столбце PostgreSQL varbit
(требуется использование @SingleValue
)
- Исправление обнаружения анонимных подклассов Enum (типы с переопределенными методами)
3.11.1
- Исправление привязки PreparedBatch для вложенных аргументов, которые нельзя подготовить
3.11.0
- Разрешено прямое связывание подтипов Argument
- Использование
@ColumnName("name")
для переопределения имени свойства
Основные улучшения производительности: ArgumentFactory теперь является Prepareable
Подготовленные аргументы должны выбирать реализацию ArgumentFactory на основе квалифицированного типа, а не значения. Это значительно увеличивает производительность для больших партий вставок.
3.10.1
- Исправление привязки SqlArray для типов double[] / float[] в PostgreSQL# 3.10.0
- Новые возможности
- Handle.getJdbi получает владеющий экземпляр Jdbi
- SqlStatement (как Query) имеет новые методы bindArray
- sqlobject's
EmptyHandling
enum обратно перенесен в основной пакет для вызова SqlStatement.bindList
- OutParameters позволяет получить
getRowSet
для просмотра параметров вывода типа курсора
- Call.invoke позволяет обрабатывать OutParameters перед закрытием заявки с помощью Consumer или Function
- @SqlCall позволяет обрабатывать OutParameters перед закрытием заявки путем передачи Consumer или Function
- installPlugin пропускает дублирующиеся JdbiPlugins (по сравнению с Object.equals)
- KotlinSqlObjectPlugin автоматически устанавливает забытый SqlObjectPlugin
- ClasspathSqlLocator позволяет отключать удаление комментариев и устаревает статический API
- KotlinMapper учитывает
@PropagateNull
- Freemarker позволяет настраивать Configuration
- FreemarkerSqlLocator теперь создается через FreemarkerConfig для совместного использования конфигурации
- Новые бета возможности
- добавлены методы register для квалифицированных фабрик на Configurable,
ColumnMappers и ArgumentFactories
- Исправления ошибок
- вызовы @CreateSqlObject в контексте on-demand создаются новые on-demand SqlObjects
Yöntemler @CreateSqlObject, on-demand bağlamında yeni on-demand SqlObjects oluşturur.
- вызовы SqlObject.withHandle / Transactional.inTransaction теперь безопасны вне контекста on-demand
- SqlParsers больше не сохраняет все заявки и использует кеш caffeine
- Совместимость
- добавлен модуль для запуска тестов интеграции Spring 4 против Spring 5 для мониторинга совместимости вперед
- OutParameters больше не имеет открытого конструктора (этот тип никогда не должен был иметь открытого конструктора)
3.9.1
- Исправления ошибок
- исправление маленькой утечки заявок PreparedBatch
- исправление ошибки NullPointerException при суммаризации заявок
- Улучшения
- небольшие улучшения производительности при отображении Optional
3.9.0
- Новые возможности
-
ResultIterable<T>.map(Function<T, U>)
возвращает ResultIterable<U>
с преобразованными элементами
с использованием предоставленной функции-преобразователя.
-
ColumnMappers.setNullPrimitivesToDefaults(boolean)
позволяет выбрать, следует ли заменять базовые значения null базы данных на дефолты Java или генерировать исключение.
-
@PropagateNull
аннотация позволяет указать, что отсутствие свойства указывает на отсутствие составного значения
-
@DatabaseValue
аннотация позволяет настраивать значения enum, хранящиеся в базе данных
- Исправления ошибок
- Интеграция Immutables не учитывает @Value.Default для примитивов, которые становятся null в базе данных
- Улучшения
- Immutables: более умная обработка префикса 'is'
-
StatementExceptions
конфигурационный класс позволяет настраивать длину сообщений исключений
- Изменения
- Соответствие PreparedBatch без привязок поведению обычного пустого Batch (не возвращать результатов)
- Изменения в бета-API
- добавлен GenericTypes.box
- QualifiedType: переименован mapType -> flatMapType, добавлен настоящий mapType
3.8.2
- Улучшения
-
jdbi3-gson2
артефакт теперь управляем в jdbi3-bom
.
- Парсер SQL-скрипта больше не рассматривает операторы JSON PostgreSQL
#>
или #>>
как комментарии.
- Улучшенный кеш снижает образование мусора внутри внутренних механизмов парсинга SQL Jdbi.
3.8.1
- Исправления ошибок
- обеспечить SqlBatch заявкам сustomizers с не-null Statement
3.8.0
- Новые возможности
-
RowViewMapper
позволяет использовать более высокий уровень RowView
в RowMapper
.
-
ResultIterable.first()
возвращает первую строку. Вызывает исключение, если строк нет.
-
ResultIterable.one()
возвращает единственную строку. Вызывает исключение, если строк нет или их несколько.
-
ResultIterable.findOne()
возвращает Optional<T>
единственной строки, или Optional.empty()
, если строк нет, или единственная строка null. Вызывает исключение, если строк несколько.
- Устаревший API
-
ResultIterable.findOnly()
устарел в пользу нового метода ResultIterable.one()
.# 3.6.0
- Новые возможности
- Теперь
ConnectionFactory
также может настраивать закрытие соединений.
- Метод
GenericTypes.findGenericParameter(Type, Class)
теперь принимает индекс, например, для решения V
в Map<K, V>
.
- Аннотация
@JdbiConstructor
теперь может использоваться на статическом методе завода.
-
GenericMapMapperFactory
обеспечивает плавный API и поддержку SqlObject для отображения однородных строк (например, "SELECT 1.0 AS low, 2.0 AS medium, 3.0 AS high") в Map<String, V>
для любого V
, которое можно обработать с помощью ColumnMapper.
- Перегрузки метода
ResultBearing.mapToMap
для использования GenericMapMapperFactory
.
- Создание
ParsedSql
теперь возможно через фабрику ParsedSql.of(String, ParsedParameters)
.
- Создание
ParsedParameters
теперь возможно через фабрики ParsedSql.positional(int)
и ParsedSql.named(List<String>)
.
- Улучшения регистрации массивов SQL:
- Фабричные методы
SqlArrayType.of(String, Function)
и SqlArrayTypeFactory.of(Class, String, Function)
- Удобный метод
Configurable.registerArrayType(Class, String, Function)
- Поддержка SQLite в JdbiRule (jdbi3-testing).
-
TimestampedConfig
теперь контролирует ZoneId
, используемый для генерации OffsetDateTime
.
-
StatementCustomizer
теперь имеет хук перед шаблонированием SQL-запроса.
- Новый бета-API
- Квалификаторы типа для привязки и отображения. Используйте аннотации для различия между разными SQL-типами данных, которые отображаются в одинаковый Java-тип. Например, VARCHAR, NVARCHAR и Postgres MACADDR все отображаются в String, но привязываются и отображаются с помощью разных JDBC-API.
- Поддержка столбцов NVARCHAR с использованием квалификаторной аннотации @NVarchar.
- Поддержка столбцов MACADDR Postgres с использованием квалификаторной аннотации @MacAddr.
- Поддержка столбцов HSTORE с использованием аннотации @HStore.
- @Json квалификатор типа с связками Jackson 2 и Gson 2.
- Начальная поддержка объектов значений Immutables.
- Методы
SqlStatement.defineNamedBindings
и @DefineNamedBindings позволяют копировать привязки в определения.
- Изменения поддержки Oracle DB
- Из-за продолжающихся проблем стабильности с серверами Maven Oracle мы вынесли артефакт jdbi3-oracle12 за рамки основного проекта, на новый домашний адрес https://github.com/jdbi/jdbi3-oracle12. Это значит, что версии jdbi3-oracle12 больше не будут синхронизироваться с остальной частью Jdbi. Соответственно, мы убрали jdbi3-oracle12 из BOM.
- Изменения API
- SQLitePlugin теперь имеет манифест ServiceLoader, который заслуживает автоматической установки.
3.5.2
- Исправления ошибок
-
bindList
выбрасывает NullPointerException
, если вызван с неизменяемым списком, согласно спецификации это безопасно.
- Улучшения
- Улучшение привязки частных реализаций интерфейсов.
- Улучшенная логируемость (через
SqlLogger
) встроенных экземпляров Argument JDBI.
3.5.1
(ошибка, 3.5.0 был выпущен из неправильного коммита!)
- Новый API
-
SqlStatements.allowUnusedBindings
позволяет привязывать Arguments к частям запроса, которые могут быть опущены в окончательном запросе (например, благодаря TemplateEngine, который рендерит условные блоки) без получения исключения.
- Добавлен класс конфигурации
JdbiConfig MapMappers
для настройки преобразования имени колонки, предпочитаемый над старым булевым переключателем.
- Метод
ColumnNameMatcher.columnNameStartsWith()
, используемый отражательными мапперами для короткого замыкания вложенных отображений, когда ни одна колонка не начинается с префикса вложения.
-
bindMethodsList
и @BindMethodsList
создают VALUES(...)
кортежи путём вызова именованных методов.
- Улучшения
-
SqlObject
больше не преобразует исключения, которые не являются Runtime (слегка нарушая обратную совместимость).
- Использование
MethodHandles
вместо отражения для выполнения меньше обёртки исключений / преобразования.
- Пропуск неиспользуемого строкового форматирования для улучшения производительности.
- Лучшая поддержка Singleton для Spring
FactoryBean
.
-
KotlinMapper
уважает аннотации конструктора, улучшения lateinit
.
- Корректировка поведения привязки
Argument
, где количество предоставленных Argument
отличается от ожидаемого.
- Возможность выборочного отображения
@Nested
объектов при использовании BeanMapper
, ConstructorMapper
, FieldMapper
или KotlinMapper
. @Nested
объекты отображаются только тогда, когда набор результатов содержит колонки, соответствующие вложенному объекту.
-
ConstructorMapper
позволяет параметрам конструктора, помеченным @Nullable
, отсутствовать в наборе результатов. Любой аннотации, названной "Nullable", из любого пакета, может быть использована.
- Артефакт
jdbi3-testing
теперь имеет зависимости pg
, помеченные как опциональные, в случае, если вам требуется, например, только h2
или oracle
.
-
LocalTransactionHandler
: откат при выбросе Throwable
.
- Тестирование на
openjdk11
.
- Поддержка отображения
EnumSet
.
3.4.0
ЗАМЕЧАНИЕ: теги Git этого выпуска отсутствуют из-за ошибки поддержки!
- Новый API
- Метод
StatementException.getShortMessage
.
- Метод
SqlStatements.setQueryTimeout(int)
для настройки параметра queryTimeout
JDBC Statement.
- Исправления ошибок
- Мостовые методы приводят к тому, что исключения
SqlObject
оборачиваются в InvocationTargetException
.
- Игнорирование статических методов на типах
SqlObject
.
- Улучшения
- Обработка
null
значений в определённых атрибутах.# 3.3.0
- Новый API
- Методы
SerializableTransactionRunner.setOnFailure()
и setOnSuccess()
позволяют регистрировать обратные вызовы для наблюдения за успехом и провалом транзакций.
- Метод
JdbiRule.migrateWithFlyway()
для выполнения миграций Flyway на тестовой базе данных перед запуском тестов.
- Аннотация SQL объекта
@UseStringSubstitutorTemplateEngine
.
- Аннотация
@Beta
для идентификации нефинальных API.
- Разработчики приложений приглашаются попробовать бета-API и предоставлять обратную связь, чтобы помочь нам выявить слабые места и сделать улучшения перед тем, как новые API станут финальными.
- Поддерживающим библиотекам рекомендуется воздержаться от использования бета-API, так как это может привести к
ClassNotFoundExceptions
или NoSuchMethodExceptions
во время выполнения, когда бета-API меняются.
- Улучшения
- Добавлено несколько дополнительных javadoc в
SqlLogger
.
- Аннотация
@UseTemplateEngine
теперь работает с MessageFormatTemplateEngine
и StringSubstitutorTemplateEngine
.
- Исправления ошибок
- Метод
SqlStatement.bindMethods()
(и @BindMethods
) теперь выбирает правильный метод, когда тип возвращаемого значения является generics.
- Метод
mapToMap()
больше не выбрасывает исключение при пустых наборах результатов, когда ResultProducers.allowNoResults
истинен.
- Разрывы обратной совместимости
- Удалена
JdbiRule.createJdbi()
в пользу createDataSource()
. Это было необходимо для реализации функции migrateWithFlyway()
выше и подготовки пути для будущих добавлений.
- Удалён
SqlLogger.wrap()
добавленный в 3.2.0 из публичного API.
- Конвертирован
MessageFormatTemplateEngine
из enum в обычный класс с публичным конструктором. Константа enum INSTANCE
была также удалена.
- Удалены методы
defaults()
и withCustomizer()
фабрики StringSubstitutorTemplateEngine
в пользу соответствующих публичных конструкторов.
3.2.1
- Исправление
IllegalArgumentException
"URI is not hierarchical" в FreemarkerSqlLocator
.
3.2.0
- Новые модули:
-
jdbi3-testing
— тестовое правило JdbiRule
для JUnit тестов
-
jdbi3-freemarker
— отображение шаблонов SQL с использованием FreeMarker
-
jdbi3-commons-text
— отображение шаблонов SQL с использованием Apache commons-text StringSubstitutor
-
jdbi3-sqlite
— плагин для использования с базой данных SQLite
- Новая API
- Аннотация
@SqlScript
для выполнения нескольких операторов
-
SqlLogger
для логирования запросов, времени выполнения и исключений. Заменяет TimingCollector
, который теперь устарел
- Добавлена конфигурация
ResultProducers.allowNoResults
в случае, когда может быть получен набор результатов или нет
- Шаблонизатор
MessageFormatTemplateEngine
, отображает SQL с помощью java.text.MessageFormat
- Тестовое правило
SqliteDatabaseRule
(в тестовой библиотеке jdbi3-core
)
- Улучшения
-
@MaxRows.value()
теперь можно опустить при использовании как аннотацию параметра
- Обработка максимального количества попыток в
SerializableTransactionRunner
теперь генерирует более информативные исключения
- Операторы PostgreSQL типа
'?'
и '?|'
теперь могут использоваться без ошибочного распознавания позиционных параметров. Экранируйте их в ваших SQL-запросах как '??'
и '??|'
.
- Поддержка привязки параметров
OptionalInt
, OptionalLong
и OptionalDouble
.
- Исправление ошибок:
- Default методы
SqlObject
теперь работают в JDK 9
-
SqlObject
больше не путается относительно типов результатов из-за мостовых методов
-
StringTemplate
больше не делится между потоками групп шаблонов, чтобы решить проблемы конкурентного доступа в проекте StringTemplate
-
DefineStatementLexer
лучше обрабатывает предикаты, которые выглядят как определения. Больше нет ошибок непредвиденного <
вместо меньше чем!
- Привязка
LocalDate
должна хранить правильную дату, если сервер и база данных используются в разных часовых поясах.
3.1.1
- Улучшение совместимости с IBM JDK для методов по умолчанию
- Разрешено использование не-public типов
SqlObject
- Исправлены утечки
ThreadLocal
и StringTemplate
3.1.0
- Проверка строгого управления транзакциями в
Handle.close()
теперь может быть отключена через getConfig(Handles.class).setForceEndTransactions(false)
.
-
StringTemplate
SQL Locator поддерживает импорт групп StringTemplate
из других групп.
- Новый интерфейс
RowReducer
и связанные API позволяют легко сводить соединения мастер-детали в серию объектов мастеров с прикрепленными детальными объектами. Смотрите:
- Интерфейс
RowReducer
- Абстрактная реализация
LinkedHashMapRowReducer
для большинства случаев
- Метод
ResultBearing.reduceRows(RowReducer)
- Аннотация
@UseRowReducer
для SQL Object
- Исправлен баг в
PreparedBatch
, препятствующий повторному использованию партий.
- Дополнительные удобные методы для Kotlin для избежания добавления
.java
ко всем типам Kotlin:
Jdbi.withExtension(KClass, ExtensionCallback)
Jdbi.useExtension(KClass, ExtensionConsumer)
Jdbi.withExtensionUnchecked(KClass, callback)
Jdbi.useExtensionUnchecked(KClass, callback)
-
EnumMapper
пытается найти совпадение без учета регистра, если точное совпадение отсутствует
-
OracleReturning.returningDml()
поддерживает именованные параметры
- Исправлен регрессивный баг в Postgres typed enum mapper, вызывавший переход на Jdbi по умолчанию enum mapper.
3.0.1
- Поддержка Kotlin мапперов для аннотации
@Nested
- Класс
ReflectionMapperUtil
сделан публичным.
- Поддержка
collectInto()
и SQL Object возвращаемых типов для OptionalInt
, OptionalLong
, OptionalDouble
и Vavr Option
.
- Новый плагин
jdbi3-sqlite
с специализированным привязыванием и картографированием столбцов для java.net.URL
.
- Решение проблемы многопоточной ситуации с загрузкой
StringTemplate
STGroups и шаблонов.
- Колонковый маппер для Vavr
Option
.
3.0.0
- [разрыв] Добавлен параметр
ConfigRegistry
в метод SqlLocator.locate()
.
3.0.0-rc2
- Мапперы строк и колонок для типов
Optional
- Привязка вложенных атрибутов, таких как
":user.address.city"
, с помощью bindBean()
, bindMethods()
, bindFields()
, а также @BindBean
, @BindMethods
и @BindFields
в SQL объектах.
- Картирование вложенных атрибутов с помощью
BeanMapper
, ConstructorMapper
и FieldMapper
, используя аннотацию @Nested
.
- SQL объекты наследуют классовые аннотации от родительских типов.
-
bindList()
и @BindList
теперь следуют стилю именования параметров активного SqlParser
, через новый метод SqlParser.nameParameter()
. Например, ":foo"
для ColonPrefixSqlParser
против "#foo"
для HashPrefixSqlParser
.
3.0.0-rc1
- Методы SQL объектов могут иметь
Consumer<T>
вместо типа возврата. Смотрите http://jdbi.github.io/#_consumer_methods.# 3.0.0-beta4
- [разрыв] ResultSetMapper -> ResultSetScanner; уменьшение перегруженности 'Mapper'
- PreparedBatch: выбрасывает исключение, если вы пытаетесь добавить пустое привязывание
- [разрыв] Удалены поведения автоматического выбора маппера из StatementContext.findRowMapperFor() и RowMappers.findFor(), в пользу новых методов StatementContext.findMapperFor() и Mappers.findFor(). Предыдущие версии:
- StatementContext.findMapperFor(...) или Mappers.findFor() могут вернуть либо рядовый маппер, либо первый-колонковый маппер.
- StatementContext.findRowMapperFor(...) или RowMappers.findFor() возвращает только рядовые мапперы.
- StatementContext.findColumnMapperFor(...) или ColumnMappers.findFor() возвращает только колонковые мапперы.
- [разрыв] Переименованная мета-аннотация @SqlMethodAnnotation в @SqlOperation.
- Добавлена поддержка Vavr объектно-функциональных типов в модуле jdbi3-vavr.
- Поддержка java.time.ZoneId.
3.0.0-beta3
- Добавлены расширительные методы для Jdbi класса для работы вокруг недостатка поддержки прозрачности исключений в Kotlin: withHandleUnchecked, useHandleUnchecked, inTransactionUnchecked, useTransactionUnchecked, withExtensionUnchecked, useExtensionUnchecked.
- Переименован артефакт org.jdbi:jdbi3 в org.jdbi:jdbi3-core для согласованности с другими модулями.
- [разрыв] StatementContext.getParsedSql() теперь возвращает ParsedSql вместо строки.
- [разрыв] Удалены методы fetchForward / Reverse из SqlStatement; заявления теперь FORWARD_ONLY.
3.0.0-beta2
- [разрыв] Удалены методы Handle.update() и Handle.insert(), в пользу Handle.execute(), который выполняет ту же задачу. Handle.execute() теперь возвращает количество обновлений.
- Удалён основной зависимость на Guava.
- [разрыв] Переключение с 1- на 0-индексированные индексы в OracleReturning.returnParameters().
- [разрыв] Добавлен параметр StatementContext в метод NamedArgumentFinder.find().
- [разрыв] Перемещён и переименован JoinRowMapper.JoinRow в топ-уровневый класс.
- [разрыв] Изменены аннотации @Register* на повторяемые, вместо использования массивных атрибутов.
- [разрыв] Перемещён и переименован MapEntryMapper.Config в топ-уровневый класс MapEntryMappers.
- MapMapper сохраняет порядок колонок, #848.
- [разрыв] Разделение Handle.cleanupHandle() на cleanupHandleCommit() и *Rollback().
- [разрыв] Удалён перечень TransactionStatus.
- [разрыв] Переработана StatementRewriter в TemplateEngine и SqlParser.
3.0.0-beta1
- [разрыв] Переработана SqlStatementCustomizerFactory.createForParameter(...):
- Теперь возвращает новый тип SqlStatementParameterCustomizer, так что мапперы параметров могут быть кэшированы и повторно использованы для производительности.
- Теперь принимает параметр Type, так что мапперы привязки параметров больше не должны проверять, является ли заявление PreparedBatch.
- [разрыв] Конфигурационный класс Handlers рефакторирован для возможности альтернативного отображения методов обработчиков.
- [разрыв] Переименованы методы BeanMapper, FieldMapper и ConstructorMapper.of(...) в factory(...). Добавлены методы of, которые возвращают RowMappers, в то время как ранее возвращались RowMapperFactory.
- [разрыв] Смешивание именованных и позиционных параметров в SQL заявлениях теперь выбрасывает исключение. Смотрите https://github.com/jdbi/jdbi/pull/787.
- Реестр обработчиков позволяет пользователям использовать пользовательские SQL Object методы обработчиков без SQL метода аннотации.
- Реестр декораторов обработчиков позволяет добавлять пользовательское поведение к любому методу SQL Object, с использованием или без использования аннотации.
- Плагин jdbi3-kotlin добавляет поддержку для отображения Kotlin данныхных классов.
- Плагин jdbi3-kotlin-sqlobject добавляет поддержку для Kotlin SQL Objects, включая Kotlin методы по умолчанию и значения параметров по умолчанию.
- Поддержка сбора результатов в Map и Guava's Multimap.
- Конфигурационный параметр для контроля за привязкой "неопределенного null".
- Поддержка типа возврата boolean[] для методов @SqlBatch.
- Исправление ошибок:
- NullPointerException в плагине Postgres при привязке null UUID.
- IllegalArgumentException с @SqlBatch при пустом партии.
- NullPointerException при привязке null к столбцу массива.
3.0.0-beta0
- Переработан для Java 8 - лямбды, потоки, опциональные значения, прозрачность исключений.
- Поддержка типов java.time (JSR-310) типа LocalDate и OffsetDateTime.
- Лучшая поддержка пользовательских коллекций, используя Java 8 Collector.
- Поддержка SQL массивов.
- BeanMapper и другие отражательные мапперы теперь распознают snake_case имена колонок и соответствуют им Java свойствам.
- Архитектура плагинов, которая делает легким разделение конфигурации.
- Плагины для поддержки типов из сторонних библиотек: JodaTime, Guava, StringTemplate, Spring.
- Плагины для поддержки конкретных поставщиков баз данных: H2, Oracle, Postgres.
- Пригоден для миграции: Jdbi v2 и v3 будут мирно сосуществовать внутри одного проекта, так что вы можете мигрировать по своему темпу.
2.78
- @BindIn: исправление обработки пустых списков на Postgres.
- очистка ThreadLocals SqlObject при закрытии, исправление утечки при перезагрузке веб-приложения.
- экспорт Script.getStatements()
2.77
- Улучшенная функциональность BindIn: теперь может обрабатывать Iterable и массивы/varargs любого типа, и имеет настраиваемую обработку для null/пустого аргумента.
- Проверьте комментарии исходного кода или подсказки вашего IDE для подробностей.
2.76
- ВНЕШНЯЯ ИЗМЕНЕНИЕ SPRING: переход с Spring 2 на Spring 3, как вовремя со стороны нас
- Поиск SQL в контексте метода SqlObject теперь также выполняется согласно тем же правилам, что и аннотация
- DefaultMapper теперь имеет возможность отключить складывание регистров
- Исправление AbstractMethodError при работе методов SqlObject
2.75
- простая поддержка @GetGeneratedKeys @SqlBatch (только ключи типа int пока)
- Улучшение производительности ClasspathStatementLocator
2.74
- cglib 3.2.2, asm 5.1; исправление генерации кода для новых методов моста Java 8
- @UseStringTemplate3StatementLocator теперь кэширует созданные локаторы
- новый @OutParameter аннотация для получения именованных параметров OUT на методах @SqlCall
- экспонировать Handle.isClosed# 2.73
- Разрешение очистки привязок в SQLStatement
- наконец правильно парсим синтаксис CAST PostgreSQL 'значение::тип' в префиксах с двоеточием
- исправление зависания @SqlBatch если вы забудете указать параметр типа Iterable
- исправление @SqlUpdate @GetGeneratedKeys для разрешения типов возврата, отличных от чисел
- Экспонировать Foreman на StatementContext
2.72
- Поддержка возможности предоставления списка имён колонок, возвращаемых в подготовленной партии #254
Yöntemlerin dönüş türleri için öncelikli kontrol
2.71
- исправление @BindBean для приватных подтипов, #242
2.70
*** ОСНОВНЫЕ ИЗМЕНЕНИЯ ***
- разрешение методов по умолчанию JDK8 в интерфейсах SQLObject. Обратная совместимость #190.
- переход на стандартный Maven toolchains.xml для кросс-компиляции, #169.
Смотрите https://maven.apache.org/guides/mini/guide-using-toolchains.html
для инструкций по использованию.
- Корректная обработка точек с запятой и внутренних комментариев в SQL-запросах.
Существующие SQL-запросы могут сломаться из-за изменений лексера, убедитесь, что у вас есть покрытие тестами.
- Введение "колонковых мапперов", которые значительно улучшают обработку типов для автоматического маппинга стиля BeanMapper.
Смотрите https://github.com/jdbi/jdbi/pull/164
- Отказ от явных "вложенных" транзакций. Они почти наверняка работают не так, как вы ожидаете. Используйте точки сохранения вместо этого.
- Предварительная проверка типа возврата методов SqlObject, аннотированных @SqlUpdate
- Разрешение получения сгенерированных ключей по имени для Oracle
- Разрешение получения сгенерированных ключей из подготовленных Batch-запросов
- Кэширование парсинга StatementRewriter запросов
- Поддержка маппинга типов URI, char, Character
2.63
- Включение удобных для лямбд методов обратного вызова на Handle и DBI, #156
2.62
- Также включить asm в шейдинг, исправление сборки. Простите за поломанные выпуски...
2.61
*** НЕ ИСПОЛЬЗУЙТЕ ***
- Исправление проблемы шейдинга в 2.60, исправление #152
2.60
*** НЕ ИСПОЛЬЗУЙТЕ ***
- Исправление генерации javadoc для JDK6 и JDK8
- Добавление поддержки комментариев стиля /* */
- Добавление @BindMap аннотации, которая позволяет передачу параметров в виде Map<String, Object>
- Добавление поддержки выполнения объектов Script как отдельных запросов, а не партий
- Добавление поддержки базового имени привязки на основе позиции аргумента (спасибо @arteam)
- Исправление утечки соединений через итератор результата в Sqlobject на запрос (спасибо @pierre)
- Переход на использование cglib вместо cglib-nodep чтобы мы могли использовать ASM 5.0.2, совместимое с Java 8
- Обновление Classmate до версии 1.1.0
2.59
- Исправление #137, поломка кеша ClasspathStatementLocator (спасибо @HiJon89).
- Распознавание MySQL REPLACE statements
2.58
- Совпадает с 2.57, кроме того, что jar корректно затенён.
2.57
*** НЕ ИСПОЛЬЗУЙТЕ ***
- Упаковка для 2.57 была случайно сломана, используйте 2.58 вместо.
Спасибо @HiJon89 за обнаружение проблемы!
- использование Types.NULL для null объектов (спасибо @christophercurrie)
- улучшение поведения на транзакционном автокоммите (спасибо @hawkan)
- исправление утечки соединений в Sqlobject на запрос (спасибо @pmaury)
- чистка кода
2.54
- исправление ошибки очистки при повторном вызове cleanupHandle на одном и том же запросе.
- Общее объектное связывание использует конкретный тип, если значение не равно null.
2.53
- Тесты теперь запускаются параллельно
- Добавление загрузки группы Template в StringTemplate3StatementLocator
- добавление глобального кеша для шаблонов, загруженных из аннотации.
- исправление ошибки кеша обработчика.
2.52
2.51
- исправление жалоб PMD, Findbugs и javadoc
- очистка лицензионных заголовков во всех файлах исходного кода
- использование стандартного basepom.org base pom для сборки, сборка со всеми проверками включенными
- сборка с antlr 3.4
- использование classmate 0.9.0 (из 0.8.0)
- сделать все зависимости, которые не требуются, опциональными (не предоставленными)
2.50
- добавление установки Travis для автоматических сборок
- Удаление зависимости log4j для логгера slf4j
- Уверенность, что компиляция с JDK7 или выше использует JDK6 rt.jar
- Исправление кода @BindBean / Foreman.waffle для использования правильных ArgumentFactories и не только ObjectArgumentFactory
- исправление случайных ошибок тестирования при использовании более новых версий плагина surefire
2.45
- Поддержка установки значений enum из строк в BeanMapper
2.44
- Добавление java.io.Closeable к Handle и ResultIterator
2.35
- Использование CGLIB для sql объектов вместо динамических прокси
- Поддержка классов, а не только интерфейсов в api sql объекта
- Добавление @Transaction для методов, не аннотированных @Sql* в sql объектах
- @CreateSqlObject аннотация sql объектов для замены Transmogrifier
2.31
- Добавление доступа к ResultSet на FoldController
2.12
- Зарегистрированные мапперы на DBi и Handle, и добавление Query#mapTo
- Api sql объекта
2.11
- Бракованный выпуск попытки с Maven 3
2.10.2
- Исправление: разрешение экранирования произвольных символов в источнике SQL, особенно разрешение экранирования ':'
(что требуется для типовых кастов postgres)
2.10.0
- небольшие изменения кода для снижения количества предупреждений
- Экспонирование NamedArgumentFinder для возможности пользовательского поиска аргументов. JDBI уже предоставляет
два реализации Интерфейса, один для карт и один для BeanProperties.
- Добавление способности установки времени ожидания запроса (в секундах) на SqlStatement
2.9.3
- Добавление элемента в pom для возможности входа в центральный репозиторий :-)
2.9.2
- Добавление ` как легального символа SQL в грамматике с префиксом двоеточия
- не существующий выпуск, борьба с Maven
2.9.1
2.9.0
- Делаем DefaultMapper публичным.
- Аборт, пробую сделать gpg подписи работать корректно
2.8.0
- Добавление методов к SqlStatement и PreparedBatch для возможности добавления набора определений в контекст одним шагом.
- Добавление ~ { и } как легальных символов в грамматике с префиксом двоеточия# 2.7.0
- Добавлен TimingCollector, который можно зарегистрировать на DBI или handle, затем он будет вызван с временем в наносекундах,
прошедшим каждый раз, когда выполняется запрос против базы данных.
- Восстановлены некоторые конструкторы исключений, которые были случайно удалены в 2.3.0, делая 2.4.0-2.6.x некомплементарными.
- Привязка
java.util.Date
как timestamp
, поскольку она содержит время и дату.
- Конструктор
BasicHandle
теперь является пакетным приватным (как он всегда должен был быть).
- Добавлен отчёт Clirr на сайт Maven.
- Конвертирование всех вызовов
System.currentTimeMillis()
в System.nanoTime()
, которое более точно и намного легче.
Поскольку мы только рассчитываем временные различия, этого достаточно.
- Исправлено большое количество предупреждений компилятора.
- Добавлены проверки
null
для всех типов объектов на SqlStatement
.
- Перемещены проверки
null
объектов, которые не требуют упаковки/распаковки, в классы Argument
. Сохранены проверки null
для объектов/примитивов
в SQL, чтобы избежать лишней упаковки/распаковки.
2.6.0
- Исправлено несколько предупреждений компилятора.
- Добавлены новые методы привязки для
SqlStatement
:
-
Integer
, Boolean
, Byte
, Long
, Short
, Object
-
double
, float
, short
примитивы.
- Все методы привязки, принимающие объект, должны проверять значения
null
и привязывать NullArgument
соответственно.
2.5.0
- Добавлены новые методы привязки для
SqlStatement
:
- типы
char
-
boolean
как int
(для баз данных, не имеющих типа boolean
).
- Восстановлен юнит тест, удалённый в 2.4.9 с
unicode escape
.
2.4.9
- Удалены юнит тесты, зависящие от платформенной кодировки.
2.4.8
- Переключение на ANTLR 3 для грамматики, чтобы сделать shading снова рабочим.
2.4.5
- Перемещение исходного кода на GitHub.
2.4.4
- Исправлены несколько зависимостей и проблемы shading, возникшие после перехода с ant на Maven.
2.4.3
- Добавлено лучшее сообщение об ошибках в запросах.
2.4.2
- Переключение на Maven2 для сборки.
- Добавлен контекст запроса в исключения, связанные с запросами, включая новый абстрактный подкласс
DBIException
, StatementException
,
который экспонирует этот контекст.
2.3.0
- Исправлено зависящее от OracleReturning на этапе компиляции с помощью Reflection.
- Устарело OracleReturning.
- Добавлена поддержка CallableStatement:
- новый метод
handle.prepareCall
- новый класс
Call
и интерфейс CallableStatementMapper
.
- Исправлена грамматика с префиксом двоеточия для поддержки пустых литералов и экранированных кавычек.
- Добавлен доступ к большему количеству реального контекста запроса на
StatementContext
.
2.2.2
- Изменено OracleReturning для использования
oracle.jdbc.oraclePreparedStatement
для
совместимости с ojdbc6.jar
.
2.2.1
- Исправлена утечка результирующего набора в случае, если Mapper выбрасывает исключение вместо нормального завершения.
2.2.0
- Добавлено
DBI#inTransaction
.
2.1.1
- Добавлено информационное сообщение о времени выполнения в логи.
2.1.0
- Добавлено
Query#fold
.
- Добавлено дополнительное логирование вокруг
handle
и транзакций.
2.0.2
- Чистка
NullPointerException
, маскирующей UnableToCreateStatementException
.
2.0.1
- Добавлено
'!'
к символам для LITERAL
в грамматике с префиксом двоеточия.
2.0.0
- Добавлено
Query#list(int)
для возможности ограничения максимального размера результата от энтузиастских запросов.
- Добавлена функциональность логирования SQL.
1.4.6
- Исправлено
NPE
при работе с метаданными в Args
.
2.0pre17
- Изменено кастомизатор заявки для наличия обратных и последующих вызовов.
- Изменено OracleReturning для использования последующего вызова для извлечения результатов.
2.0pre16
- Чистка сборки, чтобы
stringtemplate
стало полезным.
- Добавлено
SqlStatement#bind(*, Character)
для конвертации в строку.
- Предоставлен не кэширующий по умолчанию билдер заявок.
- Возможность установки билдера заявок на
DBI
явно.
- Возможность повторного использования подготовленной партии путём очистки частей перед выполнением.
- Изменено итерированное результирующее множество запроса для очистки ресурсов таким же образом, как
list
, но позже.
2.0pre15
- Перемещено
StringTemplate
обратно в unstables.
- Поддержка checkpointed транзакций.
2.0pre14
- Добавлены удобные классы для однострочных результирующих наборов.
-
StringTemplate 3.0
основанный локатор заявок и классификатор пути классовой загрузки.
- Улучшена грамматика для анализа параметров с именами (
|
в LITERAL
) # 2.0pre13
- Классы поддержки Spring (2.0).
- Добавлено возможность определения атрибутов заявки на уровне
DBI
и Handle
.
- Предусмотрено использование подготовленной партии с использованием локатора заявок.
- Карта результата бинов вызывает правильный
ResultSet.getXXX()
для каждого типа свойства (getObject()
в Oracle возвращает внутренние типы Oracle).
- Разрешена позиционная привязка для
PreparedBatch
.
- Переименован
PreparedBatchPart.another()
в next()
.
- Изменено
SqlStatement#first
для возврата null
при пустом результате вместо исключения NullPointerException
.
- Возможность установки атрибутов контекста заявки для партий и подготовленных партий.
SqlStatement.bindNull(...)
2.0pre12
- [Исправление ошибки] Передача контекста заявки в запросы с отображением карты результата.
2.0pre11
- Создание
StatementContext
для возможности передачи состояния во все клиентски определенные модификации.
2.0pre10
- Разрешены цифры в именованных параметрах.
2.0pre9
- Улучшение
IDBI
для наличия функциональных методов DBI
и не конфигурационных методов.
2.0pre8
- Обработка двойных кавычек в магии именованных параметров.
2.0pre7
- Добавлены возможности Oracle DML Returning.
2.0pre6
- Внедряемые строители заявлений.
- Больше литеральных символов в парсере именованных заявлений.
2.0pre5
- Улучшен грамматический анализ для парсера именованных параметров (_ @ и _ в ЛИТЕРАЛЬ).
2.0pre4
- Переключение на грамматику на основе ANTLR для парсинга именованных параметров.
2.0pre3
- Стили разработки JDBC4 и API Docs.
2.0pre2
2.0pre1
- Полная перезапись# 1.4.5
- Исправление ошибки в кэшировании, добавленной в 1.4.4
- Оптимизация обнаружения литерального или именованного заявления
1.4.4
- Разрешение создания/удаления/изменения заявлений
- Кэширование того, поддерживает ли драйвер запрос о типах параметров подготовленного заявления
1.4.3
- Обработка драйверов (например, Oracle), которые выбрасывают исключение при попытке получить информацию о типах параметров подготовленного заявления.
1.4.2
- Явное указание версии JDK цели (1.4) для этого ветви
1.4.1
- Исправление ошибки, где null устанавливается через setObject вместо setNull. Благодарю, Simone Gianni!
1.4.0
- Вызов нового функционала на интерфейсах также как и в конкретных классах
1.3.3
- Вызов декоратора обработчика на интерфейсе IDBI
- Добавление механизма локатора скриптов аналогичного локатору заявок
1.3.2
- Сохранение SQLException для предоставления больше информации в DBIException при выполнении заявки
1.3.1
- Проблема с матчером, который не был сброшен, что проявилось только под JDK 1.5. Благодарю Patrick!
1.3.0
- Обертывание исключений, выброшенных из обработчика, в Spring DataAccessExceptions для адаптера Spring. Благодарю Thomas Risberg.
- Поддержка глобальных именованных параметров на уровнях обработчика и DBI
1.2.5
- Изменение Handle#script для группировки заявлений в скрипте
1.2.4
- Исправление ошибки в обработке именованных параметров со кавычками (было игнорировано некоторые именованные параметры неправильно)
1.2.3
- Разрешение конфигурирования обработчиков транзакций в файлах свойств
- Разрешение конфигурирования внешнего расположения SQL (например, вне пути классов)
1.2.2
- Добавление обратного вызова для управления транзакциями для чистого поддержания различных контекстов транзакций (CMT, BMT, Spring, Local) и т.д.
1.2.1
- Через Spring DBIBean, IDBI#open(HandleCallback) теперь использует транзакционно связанную обработку, если таковая имеется.
1.2.0
- DBIException теперь расширяет RuntimeException. 7-буквенное изменение основного выпуска =)
- Добавлен DBIUtils.closeHandleIfNecessary(Handle, IDBI) для возможности прозрачного управления транзакциями и соединениями в Spring, независимо от того, включены ли транзакции или нет.
1.1.2
- Handle#query(String, RowCallback): void больше не начинает транзакцию автоматически
1.1.1
- Поддержка полулинейных комментариев в внешнем SQL и скриптах SQL. Полулинейные комментарии должны начинаться с # или // или -- как первых символов строки.
1.1.0
- Добавлены удобные функции handle#first(..): Map для запроса отдельных строк
- Удален DBITransactionFailedException и использован обычный DBIException вместо него
- Добавлен нестабильный пакет для хранения элементов, подлежащих изменениям API в течение цикла основного выпуска.
- Добавлен декоратор обработчика в нестабильный набор функций
- Поддержка JavaBean отображаемых именованных параметров
- Переименован Handle#preparedBatch в Handle#prepareBatch
- Запросы возвращают java.util.List вместо java.util.Collection
- Гораздо более сложная автоматическая конфигурация
- Нарушена обратная совместимость поведения метода handle.query(String, Object) (это причина увеличения версии до 1.1.0)
- Удален метод Handle#query(String, Object, Object). Может привести к путанице из-за вышеупомянутого изменения поведения
1.0.10
- Поддержка партий и PreparedBatch
- Удален неиспользуемый исключение
- Исправлено ошибки в извлекателе именованных параметров (был пропущен именованный параметр, не предшествующий пробелу)
1.0.9
- Улучшенная автоопределение типа заявки (именованный, сырое SQL и т.д.)
1.0.8
- Инструменты интеграции с Spring
1.0.7
- Предоставлен интерфейс для класса DBI для лучшей работы с прокси
1.0.6
- Перезапуск подготовленных заявлений не работал на Oracle, исправлено.
1.0.5
- Расширение методов execute(..) для принятия полного массива аргументов, как query.
- Добавлен update(..): int, который возвращает количество затронутых строк
- Много внутренней рефакторизации
1.0.4
- Было поглощено исключение в одном месте для кратковременного 1.0.3 выпуска. Безусловно, обновитесь, если используете 1.0.3
1.0.3
- Исправлено ошибки, где заquoted текст мог быть истолкован как именованный токен, плохое меня.
- Добавлены методы HandleCallback для DBI для управления ресурсами базы данных обработчика для клиентов.
- Удален тестовый зависимости на Jakarta commons-io, который ранее использовался для удаления тестовой базы данных. Тесты теперь зависят только на Derby и JUnit, всё ещё без зависимостей времени выполнения (кроме JDBC драйвера для вашей базы данных).
1.0.2
- Добавлен механизм для загрузки информации о соединении из файла свойств для удобства. Совершенно опционально, слава Богу.
1.0.1
- Добавлены перегруженные сигнатуры аргументов для запросов на основе обратного вызова
1.0
Опубликовать ( 0 )