我是 JPA 和多层架构编码方式的新手。我目前正在开发一个新项目,我们正在制作一个 API,其中 DAO 层用于使用 JPQL 与数据库进行通信。
目前,我已经编写了 JPQL 语句来从数据库中获取数据。除此之外,我还执行延迟初始化以检索复杂对象。我想知道在 DAO 层执行延迟初始化是否是正确的方法。
我在 DAO 层之前还有 2 个层,称为引擎层和 EJB 层,在这些层中我的数据库连接处于活动状态,并且也可以在那里执行延迟初始化。我想知道这样做是否是一种很好的架构方式,因为我希望与东西相关的数据库只在 DAO 层中。
但是,我再次陷入困境,我争辩说为什么在 EJB/Engine 层中进行延迟初始化不是一个好方法,因为我让数据库连接处于活动状态以执行 DB 操作。我之所以这样想,是因为我只能在 DAO 层检索必要的数据,这些数据可以重用,并且可以根据不同类的需要执行惰性初始化。
我不确定为什么我在引擎和 EJB 层中激活了数据库连接(我希望这是用于事务管理)。它发现它是按照架构师的建议完成的,我将 EJB 定义为无状态,并且引擎级别的类在其范围内具有数据库连接。
对不起,冗长的问题。希望我已经提供了必要的细节来回答这个问题。
PS请向我推荐任何好书或文章,它们将帮助我决定哪一层负责理想地执行什么任务。