我在大学教 Java EE,这是一个学生问的问题。我说“不”,但我不太确定,所以我想我可能会问你们强大的开发人员。:)
基本上,我想做的是在我的上下文中使用实体:cat getter、setter 等,就像普通的 POJO 一样。如果我使用使用其远程接口的 EJB,实体将与核心基础设施分离,所以这是不行的。
我想过在我的硕士论文中写一个这样的层。如果这是一个死主意,请随时告诉我。如果不是,请告诉我你是否想要一个。
或者如果那里有这样的工具,请告诉我!
我在大学教 Java EE,这是一个学生问的问题。我说“不”,但我不太确定,所以我想我可能会问你们强大的开发人员。:)
基本上,我想做的是在我的上下文中使用实体:cat getter、setter 等,就像普通的 POJO 一样。如果我使用使用其远程接口的 EJB,实体将与核心基础设施分离,所以这是不行的。
我想过在我的硕士论文中写一个这样的层。如果这是一个死主意,请随时告诉我。如果不是,请告诉我你是否想要一个。
或者如果那里有这样的工具,请告诉我!
在一个基本的现代世界 Java EE 应用程序中,它分为多个层,其中有 4 个基本层
+--------------------+
| Presentation |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate |
| (Service) |
+--------------------+
| Data Access Layer |
+--------------------+
| Database |
+--------------------+
您的应用程序应该从一开始就分成这些层,这样您就可以在任何给定的时间点替换任何层而不影响它的任何兄弟层。
例如,如果您将 JDBC 用于数据访问层,您应该能够将其替换为 Hibernate,而不会影响业务委托或数据库层。使用这种架构的好处是允许与多种技术进行协作。您的业务代表(服务层)应该能够与 Web 服务对话并处理应用程序处理,甚至无需使用浏览器!
关于使用 JSP 作为表示层,还有其他可用的技术,例如,velocity,freemarker,正如上面提到的 iberck,tapestry 也有它自己的渲染引擎。您也可以使用 XML + XSLT 来呈现 UI。还有一些 UI 管理应用程序,如Tiles和sitemesh,可帮助您将各种技术集成为页面的不同组件并将它们显示为一个。
您还可以使用结合JNLP的轻量级 Swing 组件并开发桌面风格的企业应用程序。我们所需要的只是一点想象力和客户要求,我们可以使用任何东西作为表示层。
啊。看来您没有正确回答我的问题:)
Bean 用于在应用程序内部提供服务。假设我想开发一个带有 swing gui 的独立 java 应用程序,并且我想从该应用程序中使用存在于 java ee 应用程序范围内的实体。
这就是我想要无缝的:创建实体,修改它们,以直观的方式删除它们,而不关心 EntityManager 分离问题(如果你远程调用 EJB 并且它传回一个实体对象,它将被分离返回前)。
我不想开发 Web 应用程序。JSF/JSP 等是强集成的,但在许多环境中,独立的客户端应用程序会更好。:)
在中间看到您的评论,我看到您想要一个基于 Java EE 的桌面框架。
这里的答案是 JSF 在 servlet api 上工作。而且绝对是用于网络的,但是等等,你仍然可以在你的应用程序中嵌入 tomcat 或 jetty!
可能性几乎是无限的,如果您的业务层定义明确,只需构建一个调用您的业务功能的摇摆层。
此外,Java EE 是一种 API,可以替换某些部分,或者您可以只使用其中的一部分。该容器主要用于处理 EJB、Servlets JNDI 和其他小东西。所有这些都可以被桌面应用程序使用。
因此,答案取决于您的具体目标和应用程序的实际设计/实现。
一种替代方法是Spring Framework。Spring 为将实体对象绑定到视图提供了自己的支持,并在连接后为您处理获取/设置。有许多 Spring 模块可供选择。Spring MVC 和 Spring Webflow 都值得一试。Spring MVC (IMO) 更容易上手,但 Sring Webflow 允许更复杂的导航和更多范围选项(例如:流范围)。如果您正在寻找一本书Spring In Action是血统。为了使用 Spring,您需要处理一些概念(例如依赖注入),但值得花时间。
另一种选择是Tapestry5框架。Tapestry 是一个开源框架,用于在 Java 中创建动态、健壮、高度可扩展的 Web 应用程序。Tapestry 是对标准 Java Servlet API 的补充和构建,因此它可以在任何 servlet 容器或应用程序服务器中工作。
Tapestry 将 Web 应用程序划分为一组页面,每个页面都由组件构成。这提供了一致的结构,允许 Tapestry 框架承担关键问题的责任,例如 URL 构建和分发、客户端或服务器上的持久状态存储、用户输入验证、本地化/国际化和异常报告。开发 Tapestry 应用程序涉及使用纯 HTML 创建 HTML 模板,并将模板与少量 Java 代码组合。在 Tapestry 中,您根据对象以及这些对象的方法和属性来创建您的应用程序,而不是根据 URL 和查询参数。Tapestry 为 Java Web 应用程序带来了真正的面向对象开发。
如今,bean 背后的意识形态存在于我所知道的任何适当的 Java 框架中。正如rich 所提到的,Spring 是一个很好/很棒的全方位业务逻辑框架(查看它的jdbc 模板类,它们简直太棒了——另一个很棒的宝石是applicationContext.xml),对于视图层,我个人更喜欢Apache Wicket。
我不认为您应该自己制作,而是找到一个适合您需求的框架并开始为其代码库做出贡献,这样您就可以从已经形成的用户群开始,并且您的代码将被更彻底地编写,这反过来又会会让你成为一个更好的程序员。
grails ( http://www.grails.org/ ) 或 griffon ( http://griffon.codehaus.org/ ) 可能感兴趣
StringTemplate由 ANTLR 背后的人 Terrence Parr 编写。如果您对从模型生成某种文本表示感兴趣,这非常好。
使用它从同一模型生成 XML、网页和点文件时,我取得了很好的效果。你编写一个模板来渲染一个对象。该模板可以根据从模型派生的数据调用其他模板(包括递归)。(qv图片功能)
Getter 和map.get()
可直接从模板中调用。模型可以是任何 POJO。ST 以其与控制器的严格分离而自豪,因此模板本身允许的逻辑很少。
与所有这些小语言一样,它是新的学习内容,可能不是您想要的。这对我来说真的很合适。