将业务层 (JPA) 与表示层 (Netbeans 7.x) 进行通信时出现问题



我想通过以下方式开发一个"基于数据库"的Java桌面应用程序:

  • 使用 JPA 开发数据访问层 (DAL)(由 Netbeans 7.4 生成的 POJO)
  • 开发业务层(BL)(我自己的类、控制器等)
  • 开发表示层 (PL):图形用户界面(面板、框架、对话框)
  • 使 (PL) 与 (BL) 通信

我在单个 Netbeans 项目 (ProjectDBL.jar) 中开发了 (DAL + BL)。

我在一个单独的 Netbeans 项目 (ProjectGUI) 中开发了 PL

我正在将ProjectDBL.jar作为编译库导入ProjectGUI。

我没有将 EclipseLink 库添加到 ProjectGUI 中,因为它们是在 ProjectDBL.jar 中添加的。

出于同样的原因,我没有将数据库驱动程序库添加到 ProjectGUI

我想在我的DAL+BL和我的PL之间完全分开。进一步的数据库修改(例如MySQL->SQLServer)不应影响PL中所做的所有工作。

我面临的问题是当我想调用ProjectDBL中的任何方法时引发的一种异常.jar:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityNotFoundException

似乎持久性单元不能由外部罐子实例化......

编译

库不包括它使用的所有库。Otherwize,每个jar文件的大小为50MB,并且最终会在类路径中多次出现常用库。

您需要将您使用的每个库直接或间接添加到类路径中。

请考虑为此使用企业应用程序原型。

您的 DAL 和 BL 将包含在 EJB 项目中,而 PL 将包含在 Web 项目中。

这种特定情况正是此原型的用途,它将确保您在每个模块中包含必要的库,而不仅仅是去除其依赖项的已编译类。

顺便说一句,在使用 JPA 时,如果你的 DAL/BL 封装在 EJB 类中,你也会得到容器管理的事务,所以无论如何都最好隔离类,因为你可以更好地利用 JEE 广泛的内置管道。

相关内容

  • 没有找到相关文章

最新更新