Модель может относиться как к "бизнес-модели", так и к "модели данных".Бизнес-модель также известна как «бизнес-делегаты», «доменные объекты», «фасады сервисов» или что-либо в этом смысле.В хорошо спроектированном веб-приложении Java EE в соответствии со стандартами именно классы EJB не используют JPA или любую логику доступа к БД напрямую , но далее делегируют другим классам EJB, которые являютсяОбъекты DAO.
Например,
@Stateless
public class ShoppingServiceLocal implements ShoppingService {
@EJB
private ProductDAO productDAO;
@EJB
private OrderDAO orderDAO;
@Override
public List<Product> searchProducts(String query) {
return productDAO.find(query);
}
@Override
public Order orderProduct(User user, Product product, int quantity) {
product.setAvailable(product.getAvailable() - quantity);
productDAO.update(product);
Order order = new Order(user.getId(), product.getId(), quantity);
orderDAO.create(order);
return order;
}
}
Обратите внимание, что, поскольку это EJB, ProductDAO#update()
и OrderDAO#create()
выполняются в одной транзакции.Поэтому, если при создании заказа возникает исключение, отредактированная доступность также не будет сохраняться.
«Модель данных» - это Product
, User
и Order
в приведенном выше примере, которыйдолжны быть JPA @Entity
javabeans.Это все, что знает сервлет (контроллер) и JSP (представление).