Servlets 关于MVC模式,哪个组件应该处理JavaEE堆栈中的DB访问

Servlets 关于MVC模式,哪个组件应该处理JavaEE堆栈中的DB访问,servlets,jakarta-ee,model-view-controller,ejb,rdbms,Servlets,Jakarta Ee,Model View Controller,Ejb,Rdbms,我对javaee和MVC都相当陌生。我必须使用Servlet、JSP、JB和EJB开发一个web应用程序。由于大多数应用程序也需要与RDBMS交互 我的一个朋友给我发了一个他开发的wep应用程序,其中有一个 可序列化DbManager类 其中a 专用瞬态连接 作为成员变量存在 在他所有需要DB访问的servlet中,他都有一个DbManager变量。它在servlet的init方法中实例化,并按如下方式检索: this.manager = (DbManager)super.getServletC

我对
javaee
MVC
都相当陌生。我必须使用
Servlet
JSP
JB
EJB
开发一个web应用程序。由于大多数应用程序也需要与RDBMS交互

我的一个朋友给我发了一个他开发的wep应用程序,其中有一个
可序列化DbManager类
其中a
专用瞬态连接
作为成员变量存在

在他所有需要DB访问的servlet中,他都有一个DbManager变量。它在servlet的init方法中实例化,并按如下方式检索:

this.manager = (DbManager)super.getServletContext().getAttribute("dbmanager");
所有查询都作为DbManager类的公共方法实现。
我想知道这是实现这种需求的好方法,还是有更好的方法来处理数据库访问和查询执行。我想在我的EJB中实现业务逻辑和DB访问作为公共方法。

谢谢你的帮助

当您生活在JavaEE环境中时,自制的
DbManager
样式类是多余的。您可以利用从构成MVC体系结构“控制器”部分的无状态会话bean执行所有数据库查询:

@Stateless
public class OrderController {

     @PersistenceContext
     private EntityManager em;

     public void addNewOrder(Order order) {
         em.persist(order)
     }

     public List<Order> findAllOrders() {
         TypedQuery<Order> findAllOrdersQuery = em.createQuery("select o from Order o", Order.class);
         return findAllOrdersQuery.list();
         // In practice you would add pagination to this.
         // It's not practical to return a million orders to your view.
     }

     ...
}
您将看到许多示例,其中开发人员在其控制器中引入了一个所谓的层,但这被认为是多余的,因为基本上满足了该契约

@Entity
public class Order {

    @Id
    private long id;

    @Column
    private String orderNumber;

    @Column
    private String description;

    // other attributes
    ...

    Order() { }

    public Order(String orderNumber, String description) {
        this.orderNumber = orderNumber;
        this.description = description;
    }

    // setters and getters
    ...

    // you must also override equals() and hashCode()

}