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()
}