首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的三层(非web)数据库应用程序-适用于哪些API/技术?

Java中的三层(非web)数据库应用程序-适用于哪些API/技术?
EN

Stack Overflow用户
提问于 2010-06-30 02:54:16
回答 2查看 1.2K关注 0票数 3

我目前正处于一个(非常)小型数据库应用程序的研究阶段。

这是为一家本地慈善机构准备的,该机构只有3到4台运行系统的客户端机器--然而,为了将一些无关的逻辑从客户端移走,我倾向于使用三层架构(有一些数据会在适当的时候不断地通读和更新,客户端不需要知道)。

即客户端<->服务器逻辑<->数据库

虽然我精通Java本身和一些框架/库,但我并不是特别熟悉哪些框架可以在这里对我有所帮助。显然,我将使用JDBC作为数据库的一部分,但客户端和服务器之间的通信是目前的绊脚石-例如,我真的不想接近原始套接字(过度杀伤力,或者至少,必须存在另一种解决方案)

我已经询问了一些我知道的开发人员关于使用什么API的意见,虽然他们非常有帮助,但我仍然不太确定该去哪里。到目前为止,我已经听说过RESTful的东西、SOAP、COBRA和一大堆其他技术。SOAP是引起我注意的主要一个(因为有一些很好的例子将它用于普通应用程序而不仅仅是web应用程序),但我仍然不确定去哪里-它似乎不是特别适合像这样的通用应用程序(EJB也出现了,但我听到了很多针对它的仇恨-这是值得的吗?)

感觉好像为了找出“最适合这项工作的工具”,我实际上需要完整地学习每一个工具来“获取”它们(这显然是不切实际的)。

有没有人可以给我一些指导,告诉我如何选择这样的API(当我以前没有用过它们的时候),或者给我一些常见的API的信息,或者这真的只是一个试验,看看哪一个最合适?

或者,也许我完全没有抓住重点,有一个框架就是针对这种情况的,没有明显的缺点?

非常感谢你的帮助。

编辑:

完全忘记提到它到底做了什么:它并不是非常复杂--慈善机构运行着一个交通方案,所以它保存着司机、客户、司机里程记录等的详细信息,以便查看和编辑驱动器,因为司机可以被分配到重复的(正在进行的)驾驶中,这可能会“永远”持续下去。但是,正在进行的驱动器的每个实例都必须是唯一的,因为它们可以单独取消或编辑

我选择3-tier的主要原因是因为我是一个慈善机构(有许多年长的志愿者计算机用户,他们并不是非常‘聪明’),我很可能会相当频繁地更新UI,以消除新手用户不太清楚的bug和比特。所以我的计划是首先让服务器和数据库之间的后端完全“防弹”,然后把我所有的注意力都放在UI上,这样我就可以继续开发和迭代它,而不用担心后端(另外,因为我将远程开发它的一部分,所以将更新集中在客户端会稍微简单一些)。

所有这些属性可能都在喊着‘做一个基于web的系统’--这里的问题是,他们想要的是与他们已经运行的一些应用程序进行各种棘手的集成,我不相信我能(正确地)使用一个web应用程序完成这些工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-30 03:56:52

对于服务器本身,您需要某种类型的JavaEE服务器。

这里常见的实现是GlassFish (参考实现)和Apache Tomcat...假设您不需要任何比Servlet容器更高级的东西。如果您只使用web服务,则很可能不会。

对于客户端,我假设您将拥有一个GUI应用程序,该应用程序可能使用Swing或SWF。你也可以选择制作一个web应用程序,因为你已经有了一个web服务器。

对于客户端到服务器的通信,您可以使用JAX-WS (SOAP web服务)或JAX-RS (RESTful服务)实现。

JAX-WS实现包括Sun的Metro (以part of Java 6 SE的形式发布)或Apache CXF

JAX-RS实现包括JerseyApache CXF

至于数据库层,JDBC不是唯一的选择。Java也有Java Persistence API (JPA,目前是2.0版)。

JPA通常用在J2EE应用程序(特别是web应用程序)中,以简化数据库层。常见的实现是EclipseLink JPA (过时的甲骨文TopLink)和HibernateAnnotations

所有这些都基于组成JavaEE的各种标准:Servlet2.5、JAX-WS2.0、JAX-RS1.1和JPA2.0。

票数 2
EN

Stack Overflow用户

发布于 2010-06-30 03:32:25

EJB也出现了,但我听到了很多针对它的仇恨-这是应得的吗?

在EJB规范的版本1和2中,这是完全应得的。但是EJB v3代表了一个巨大的简化,这使得它们使用起来非常愉快。实际上,我可以凭良知推荐使用实体bean,而不是手动JDBC。

至于通信协议,在最新的EJB3.1规范中,将EJB公开为REST或SOAP服务非常简单--只需添加一些注释就可以了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3143803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档