Я довольно плохо знаком с сервлетами и JSP, а также с базами данных.
На данный момент у меня есть класс в части «модель» моего веб-приложения, в котором есть множество методов, которые я написал для выполнения запросов и обновлений базы данных. На данный момент в каждом из этих методов я создаю соединение с базой данных, выполняю SQL-запросы, затем закрываю соединение.
Это прекрасно работает, когда я просто делаю небольшие приложения для себя, но я начинаю понимать, что, если бы множество людей использовали мое приложение одновременно, стало бы очевидным, что создание соединений с базой данных и закрытие их для каждого метода вызов - это дорогостоящий процесс. Поэтому мне нужно изменить способ, которым я делаю вещи.
В Head First Servlet & JSP от Basham, Sierra & Bates они описывают, как можно использовать реализацию ServletContextListener для создания объекта при развертывании веб-приложения, который будет добавлен в качестве атрибута ServletContext. Авторы не углубляются в это, но подразумевают, что люди часто добавляют соединение с базой данных в качестве атрибута ServletContext. Я думал, что хотел бы реализовать это для себя, но после прочтения этой статьи stackoverflow по управлению подключением к базе данных Я не так уверен.
Однако, поскольку я только начинаю с сервлетов и JSP, не говоря уже об остальной части J2EE, большая часть этой статьи мне не подходит.
Что выделяет меня из этой статьи:
Что-то может случиться, чтобы разорвать это соединение с базой данных, и если мы полагаемся только на это соединение, то нам нужно будет повторно развернуть наше приложение, чтобы перезапустить соединение. это правильно?
Мы должны ответить на контейнере, чтобы управлять соединениями с базой данных для нас. Отлично, но как это достигнуто? Как я могу общаться с контейнером? (Пожалуйста, имейте в виду, что я только начал с сервлетами и JSP).
С точки зрения дизайна сервлета в целом, у меня есть один класс сервлетов для каждого типа запроса, который обычно имеет только один тип вызова базы данных, то есть конкретное обновление или запрос. Вместо того, чтобы иметь класс со всеми методами для запросов к базе данных, лучше ли мне иметь методы в своих соответствующих сервлетах или это будет противоречить шаблону Model-View-Controller?
Я не могу себе представить, что у меня будет слишком много проблем из-за того, что слишком много пользователей пока что замедляют работу пользователя :), но я хотел бы начать делать все правильно, если это возможно.
Большое спасибо заранее за ваши комментарии
Джо