Два подхода являются взаимодополняющими, а не взаимоисключающими. В производственных системах подобные Spring / Hibernate будут получать ссылку на пул соединений от сервера приложений в виде javax.sql.DataSource
, обычно, ища его в дереве JNDI. Обычно считается, что это «задание» сервера приложений для управления пулом соединений и его соединениями.
Помните, JNDI - это просто место для регистрации объектов для совместного использования, оно само по себе обязывает любой данный механизм пула соединений. Сервер приложений создает и настраивает пул, а приложения (через Spring / Hibernate / что угодно) используют его.
Однако приложения также могут самостоятельно настраивать и управлять пулом соединений. Это, однако, означает немного больше работы для приложения с меньшей зависимостью от сервера приложений.