Облегченная вспомогательная библиотека JDBC, альтернатива Apache Commons DbUtils

Я только что разработал свою крошечную вспомогательную библиотеку JDBC и уже понял, каким кошмаром это будет для обслуживания.

Я не ищу полноценный ORM, такой как Hibernate, просто что-то легкое и полезное, чтобы быстро выполнять вызовы JDBC, передавая операторы SQL, не вмешиваясь в проверенные исключения, закрывая ресурсы вручную и т. Д.

Исходя из своего опыта, можете ли вы порекомендовать хорошую вспомогательную библиотеку JDBC?

Пока что я взглянул на Apache Commons DbUtils, который мне кажется довольно хорошим. Есть еще идеи?


person opensas    schedule 21.08.2011    source источник


Ответы (6)


Вот список инструментов, облегчающих работу с простым JDBC:

person Lukas Eder    schedule 07.09.2013
comment
JDBC действительно потрясающий, я думаю, что его следует перенести из Spring Framwork. - person deFreitas; 26.08.2017
comment
@deFreitas: Почему? Это всего лишь один урок, и вы можете написать его самостоятельно за 10-20 минут ... - person Lukas Eder; 27.08.2017
comment
Потому что я не думаю, что переписывание JDCTemplate и PlatformTransactionManager с хорошим качеством кода и всеми его основными функциями займет всего 20 минут, и потому что я не понимаю, зачем переписывать то, что действительно хорошо работает и поддерживается всем сообществом - person deFreitas; 12.09.2017
comment
Не уверен, что вы имеете в виду. Суть JdbcTemplate - это просто синтаксический сахар над JDBC API. Но ладно, хорошо, если вы не хотите катить свой собственный, просто скопируйте и вставьте тот из Spring. Он имеет лицензию ASL 2.0, поэтому вы можете делать с ним все, что захотите, удаляя зависимость Spring. Но в любом случае вы, вероятно, имели в виду другое. - person Lukas Eder; 12.09.2017
comment
Это я или порядок в списке имеет значение? Думаю, это популярность ;-) - person sajjadG; 05.11.2017
comment
@sajjadG Первые два расположены по алфавиту. Остальные случайны. - person Lukas Eder; 06.11.2017

Также есть ORMLite и MyBatis, которые к тому же довольно легкие. Использовать spring и его rowmappers довольно просто, но вам нужно иметь дело непосредственно с JDBC. Что-то вроде любого из вышеперечисленных скроет от вас многое, но при этом не будет таким сложным, как спящий режим.

person Matt    schedule 01.07.2012

https://code.google.com/p/jdbc-helper/

Вот описание, которое я скопировал со страницы проекта: Вдохновленный проектами Spring Jdbctemplate и Commons Dbutils, JdbcHelper - очень маленькая библиотека, помогающая разработчикам кодировать общие операции jdbc. JdbcHelper очень легкий. Его размер составляет всего ~ 70 КБ, и он не имеет внешних зависимостей.

person Wei Li    schedule 13.05.2013

Существует Yank, который представляет собой сверхлегкий уровень устойчивости JDBC, который обертывает DBUtils. Чтобы использовать его, вы создаете для каждой таблицы POJO и класс DAO. Вы пишете свои собственные операторы SQL и выполняете запросы через класс DBProxy. Вам не нужно иметь дело с Connections, ResultSets или другим низкоуровневым кодом JDBC. Размер Yank jar составляет всего 13 КБ, начиная с версии 2.0.0, и он зависит только от SLF4J, DBUtils и стороннего jar-файла базы данных, какую бы технологию базы данных вы ни использовали.

person herrtim    schedule 19.01.2013
comment
Все, что мне нужно было увидеть, - это BooksDAO.selectAllBooks (), чтобы понять, что это не может работать должным образом. По сути, это то, что я построил 6 лет назад и сделал все те же ошибки, что и я. Это должен быть новый BooksDAO (transaction) .selectAllBooks (). Разграничение транзакций и контекст не должны связываться с запросами и не должны обрабатываться с помощью статических средств, иначе пострадают тестируемость и отлаживаемость. - person Scott Carey; 18.03.2014
comment
... это не может сработать - довольно несправедливое заявление. На самом деле он отлично работает, если вам не нужно выполнять несколько операторов за транзакцию. Янк никогда не утверждает, что поддерживает транзакции с несколькими операторами. - person herrtim; 14.02.2015
comment
Я видел исходный код Yank, не думаю, что это хорошая практика. У меня есть простая справка по DbUtils. a123159521.iteye.com/blog/2200647 - person zg_spring; 09.04.2015
comment
@herrtim Я не считаю это заявление несправедливым. Даже если вы не хотите поддерживать несколько операторов в транзакции, статическое цепляние убьет вас. Вы не можете написать код, зависящий от BooksDAO, без статической привязки его к базе данных и конкретной реализации. Я придерживаюсь SomeDAO.someStaticMethod() == плохой практики. someDAOImplementation.someInstanceMethod() значительно превосходит. - person Scott Carey; 27.01.2017
comment
Не тратьте время на Янки, это головная боль ... вы потратите часы на неотслеживаемые ошибки. Наконец, этот драйвер не может выполнять обновления и имеет серьезные проблемы с переводом текстовых команд SQL. - person marcello; 23.07.2020

Spring Framework (spring- дао) твой друг. Если вы правильно запрограммируете свои интерфейсы, позже (при необходимости) вы можете легко переключиться на что-то более мощное, например Hibernate. Также не стоит недооценивать Hibernate: Собственный SQL дает вам возможности полноценного SQL, и при этом вы можете извлечь выгоду из сопоставления объектов - чего-то, что вам все равно придется программировать, если только вам не нужно выполнять такие простые запросы, как select count(*) from ....

person dma_k    schedule 21.08.2011

В случаях, когда ORM не требуется, я использую пружины JdbcTemplate.

Примеры

person stacker    schedule 21.08.2011