このモデルは、「ビジネスモデル」と「データモデル」の両方に関係します。ビジネスモデルは、「ビジネスデリゲート」、「ドメインオブジェクト」、「サービスファサード」などの意味でも知られています。標準に従ってうまく設計されたJava EE Webアプリケーションでは、ではなくではJPAまたはDBアクセスロジックが直接であるが、純粋なDAOオブジェクトである他のEJBクラスにさらに委譲するのはEJBクラスです。
など。
@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()
は、単一のトランザクションで実行されている、ということに注意してください。したがって、注文を作成すると例外がスローされると、編集されたアベイラビリティは永続化されません。
「データモデル」JPA @Entity
JavaBeansのことになっている上記の例では、Product
、User
及びOrder
あります。これはサーブレット(コントローラ)とJSP(ビュー)が知っているものです。