一开始我不得不说我对 java ee 完全陌生,而且在 java 中完全陌生。我必须用这个来做我的学习项目。首先,我需要一个与远程 mysql 数据库连接的标准桌面应用程序。第二个不太重要的是与数据库连接的网络应用程序。问题是根据 java ee 标准,信息流应该是什么样子?像客户端应用程序 > 远程 > java bean > 本地 > mysql 之类的东西?对于这个简单的项目,你推荐什么 api 来处理 ORM 等?最后一个我需要一些关于 java ee 的教程或书籍。
2 回答
您实际上给出的要求和约束太少,即使是选择技术堆栈也是如此。
根据您的帖子我可以提供什么建议:
尝试分解数据访问层 (DAO),因为您可能会在桌面和 Web 应用程序之间共享它。为此,您有 2 个解决方案:
解决方案 1:两个应用程序中嵌入的 jar 模块:
这意味着该组件还必须在服务器容器 (Java SE) 之外运行。我建议不要使用 Java EE,但 Spring 因为 Java EE 还没有提供一个独立的“轻量级”容器来正确管理持久性上下文。
Spring 将允许您使用数据源(插入远程 DB)和容器事务管理(在容器外部使用 ORM 不是很有趣恕我直言)定义数据访问组件,该组件将单独运行(桌面应用程序)并在任何 servlet 内部运行容器(tomcat 等)(Web 应用程序)仅与配置文件不同。
它会给:
独立:客户端 [Swing 视图 > 控制器 > Spring 托管 DAO] > 远程数据库
Web:客户端 [html] > Web 服务器 [任何视图技术(例如 Spring MVC)> Spring 托管 DAO] > 远程或本地数据库
解决方案 2:具有共享数据访问组件实例的 SOA 架构部署在 Web 服务器上,并通过 Web 服务暴露给独立应用程序:
独立:客户端 [swing 视图 > 控制器] > http > Web 或 Java EE 服务器 [REST 或 SOAP Web 服务 > DAO] > 本地或远程数据库
网络:
否则,如果您真的不需要它,我建议不要使用 ORM,因为与它给您带来的优势相比,学习曲线相当长。(这取决于您的上下文和要求:数据模型的复杂性、现有数据库或新数据库、您的应用程序专用或共享的数据库、现有存储过程或触发器、高并发等)
对于桌面应用程序,我将流程描述为:Java Application(Core Java) -> EJB (Enterprise Java Beans) -> Hibernate (ORM) -> MySQL (DB)
对于 Web 应用程序:Struts(前端框架)-> Hibernate -> MySQL
您还可以在 struts 和 Hibernate 之间使用 EJB。如果项目相关,您实际上只需要真正交换前端(Java App 和 Struts 组件)。
我不会马上跳入成堆的框架。我从 JSP 和 Servlet 开始学得更好,然后进入 Struts,然后学习 Hibernate 等等。这太多了,一次都不必担心。
我没有要推荐的书,但http://www.mkyong.com/有一些不错的例子。