Лучше, если вы используете пул соединений, который является частью tomcat. Все, что вам нужно сделать, это определить пул соединений в файле context.xml и поместить его в папку WebContent \ META-INF, если вы используете eclipse (он находится в папке с именем META-INF в корневом каталоге файла war) ниже приведен пример, который я использую
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/theDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/theDB"
username="theusername"
password="thepassword"
maxActive="20" maxIdle="10"
maxWait="-1"
/>
</Context>
Тогда вы можете просто открыть и закрыть соединение в каждом методе запроса. Также приведенный выше код для поиска не требует двух вызовов jndi, вы можете сделать один вызов, если посмотрите следующую строку java: comp / env / jdbc / TestDB
Также вы не хотите возвращать ResultSet, вы должны вместо этого возвращать объекты, представляющие данные в результирующем наборе, поэтому, если ваш запрос возвращает объекты Customer, ваш метод для getResultSet должен называться getCustomers, и он должен возвращать List
С JDBC сложно корректно работать, особенно для обработки исключений и закрывающих операторов, соединений, наборов результатов ... и т. Д. Я настоятельно рекомендую использовать что-то вроде шаблона SpringJDBC, чтобы упростить ваш код.