В мире индустрии мы все за простоту.Например, для взаимодействия пользователя от браузера до сервера и постоянного хранилища (базы данных) мы используем следующие подходы.
MVC шаблон, в первую очередь,Это позволило бы нам полностью , а не написать сервлет для каждого взаимодействия пользователя от браузера к серверу.Это позволяет нам делать следующее:
- Разрешить контроллеру обрабатывать запрос пользователя и связывать его с нашими действиями пользователя (нашей модели).Эта модель позволяет нам писать бизнес-логику для реагирования на пользовательские данные.
В современном мире Java существует Frameworks, отвечающая нашим требованиям MVC.Тот, который выходит из коробки Java, это JSF (JavaServer Faces).
Для бэкэнда мы определенно используем базы данных, но мы тоже умны и используем ORM (Object Relational Mapping), чтобы смоделировать нашу реальную проблему в объектной модели и как ее лучше сохранить (хранить) эти объектные модели.Некоторые используют ERM (Entity-Relational Modeling) для разработки семантической модели данных.
В середине, в бизнес-логике, мы добавляем сервис (как слой бизнес-логики), но нехотите позаботиться о том, где читать / записывать данные, при условии, что они могут видеть нужные данные.Для этого добавлен Сервисный уровень, который облегчает это.По сути, у нас есть этот эффект.
public class ActionServlet extends HttpServlet {
//Action registration
public void init() {
ActionMapping mapping = .....; //some instatiation
mapping.setAction("/userRegistration", UserRegistrationAction.class);
//Save it in Application Scope
getServletContext().setAttribute("actionConfig", mapping);
}
private void doAction(HttpServletRequest request, HttpServletResponse response) throws Exception {
String path = request.getPathInfo();
Action action = ((ActionMapping)getServletContext().getAttribute("actionConfig")).getAction(path);
if (action == null) {
throw new Exception("No action of '" + path + "' found.");
}
action.execute(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
doAction(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception {
doAction(request, response);
}
}
public abstract class Action {
public abstract void execute(HttpServletRequest request, HttpServletResponse response) throws Exception;
protected void dispatch(HttpServletRequest request, String path) {
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response);
}
}
public class UserRegistrationAction extends Action {
public void execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
//Business Logic goes here...
//Call DAO,
UserRegistrationDAO dao = ; //Some DAO instantation
User user = createUserFromForm(request);
dao.save(user);
dispatch(request, "success");
}
}
Что касается настойчивости, Java 5 и выше поставляется с JPA .Вы можете использовать любую форму ORM, в зависимости от масштаба вашего проекта.Есть Hibernate (который также поддерживает JPA) или, если хотите, напишите свой собственный DAO.
Еще одна вещь, все эти процессы скучно склеивать.К счастью, у нас есть фреймворки, которые помогают нам упростить наш прекрасный пример выше.Фреймворки, такие как JBoss Seam , делают это и полностью используют спецификации Java.А пока, перейдите на простые модели проектирования и MVC (в учебных целях).Когда вы привыкнете к архитектуре, используйте фреймворки.