Это сводится к тому, как вы справляетесь с получением какой-либо зависимости в своем приложении. Лучшая общая модель, IMHO, передает ее конструктору вещей, которые в ней нуждаются. Если вы хотите разместить какой-то фасад DAO вокруг доступа к базе данных, передайте DBI в ctor вашего DAO. Если вы используете инфраструктуру DI, привяжите экземпляр DBI к структуре и @Inject.
Для вашего конкретного вопроса о соединениях эквивалентом DBI соединения JDBC является ручка. Вы должны получить Ручку, использовать ее и закрыть, как только вы закончите. Типичное использование экземпляра DBI - предоставить ему DataSource, который управляет действительными соединениями с базой данных, освободив дескриптор, как только вы закончите с ним, вы лучше используете пул соединений.
В большинстве случаев вы только закрываете экземпляр DBI, если хотите закрыть источник данных, это все, что закрывает экземпляр DBI. 98% случаев, в мире Java-для-сервера, закрытие источника данных не имеет смысла, поэтому беспокоиться о закрытии DBI (по сравнению с Handle) не имеет большого значения.
При использовании JDBI, имейте в виду:
DBI -> Datasource
Handle -> Connection
Query/SQLStatement -> Statement
This doc конкретизирует их.
Лучший вариант - не обрабатывать их :) используйте что-то, что делает это для вас, например, весна –
использует статический блок/метод для подключения. и закрыть написать общий метод. – Prashant
@ran Я пытаюсь использовать jdbi без каких-либо других зависимостей. – tarrsalah