如何更快地进行Java后端开发?或者我可以吗?

时间:2008-11-04 02:44:38

标签: java java-ee

我使用原始PHP开始进行Web编程,逐渐转向各种框架,然后转到Django和Rails。在我使用的每个框架中,几乎所有我需要对数据库做的事情(甚至涉及相对复杂的事情,如多对多关系)都可以通过自动生成的数据库API来处理,而无需太多工作。那些更复杂的操作可以通过直接SQL或将多个API调用绑定在一起来完成。

现在我开始学习Java了,让我感到困惑的是,为后端基础设施提供强大的语言需要更多的代码(这并不意味着难以维护?)来做简单的事情。教程示例:假设您要按姓氏搜索。您使用Hibernate查询语言在DAO中编写方法,然后在服务中编写一个方法来调用它(不能自动化吗?),然后从控制器调用Service方法。在我使用的任何其他框架中,你可以调用某些东西来实现

的效果
Person.find_by_last_name(request.POST['last_name'])

直接离开控制器 - 您不必编写任何自定义的东西来做类似的事情。

我还没有找到某种代码生成吗? Eclipse中的东西?对我而言,对于复杂后端的最佳选择之一而言,语言更加难以理解,这对我来说似乎并不合适。有什么我想念的吗?

8 个答案:

答案 0 :(得分:4)

Grails获胜。 Groovy与Java非常相似,但有很多很好的动态语言添加/简化。 Grails有GORM,这正是你想要的。

答案 1 :(得分:4)

在您提到的示例中,看起来他们使用的分层架构比您习惯的更多。

Controller -> Service -> DAO

这提供了应用程序内的分离。这完全取决于应用程序的体系结构,而不是Java作为一种语言。从技术上讲,Java中没有任何内容可以阻止您在控制器中调用Hibernate查询。它只是不会构成好的设计。

要考虑的另一件事是“服务”可能类似于EJB,它可能具有事务管理的作用,因此可以在单个事务中包含对DAO / Hibernate的多个调用,这些调用将自动提交或回滚成功/例外。

但是,这一切都在您使用的架构/框架中,而不是Java作为语言。

答案 2 :(得分:1)

我建议您查看Java的Spring框架。

我没有亲自使用它,但我听说过它的好消息。根据我的理解,它提供了与Django和Rails相同的功能。

答案 3 :(得分:1)

我建议你使用Seam。它是一个非常好的控制器,不会强迫你拥有完全多层的ap。它与执行ORM的JPA(Java Persistence Api)完全集成。

功能

  1. 具有非常好的范围 - 您可以将对象限定为会话,页面加载,对话(对话是来自用户的工作单位)。
  2. 不需要太多XML。
  3. 不需要太多的样板代码!
  4. 易于学习(您甚至可以从实体类或数据库模式生成框架项目;它仍然需要大量工作,但它至少会减少样板代码)
  5. 非常好的安全性(您可以使用基于角色的安全性,或使用规则框架)
  6. 在编写网页时,您使用bean(普通的java对象)。

    你可以写:

     #{PersonHome.instance.name} 
    

    将评估一个人的姓名值。如果在request参数中有person id,它将被传递给PersonH​​ome组件(如果它被正确注释),并且person bean将从db透明地加载。

    你甚至可以写:

    <h:commandLink action="#{PersonHome.delete(person}">
    

    其中controllerBean是java bean,delete接受person对象。它将被透明地转换为具有person id参数的链接,该参数将在触发action方法之前透明地转换为bean。

    现在唯一需要注意的是,它在某种程度上限制了您对视图框架的选择:它仅适用于RichFaces,GWT以及我现在无法记住的其他内容;)。

    PS。

    是的,我是一个巨大的粉丝:)。

答案 4 :(得分:0)

获取Java iBatis。它不像Django的ORM那样强大(没有什么),但它比JDBC更重要。

答案 5 :(得分:0)

好吧,是的,但这不是分离,这是我关心的问题。使用这些其他数据库API,问题是分开的 - 不是自定义数据库逻辑是在控制器中编写的(我知道它是错误的形式),而是它自动生成。调用看起来与控制器完全相同,区别在于使用Java / Hibernate我必须自己编写它并使用Django / Rails / Symfony / Cake它已经存在了。

Grails看起来非常有趣。但是,我学习Java的主要原因是因为我希望至少能够使用我可以专业使用的东西。我不确定Grails是否适合这个法案,不过因为它是Java,也许企业会比Rails更热情。

Django是我曾经使用过的最美丽的代码,但它不受那些能够负担得起定制网络应用程序的企业的信任,这是我认为我想要进入的市场。

iBATIS看起来很有前途 - 通过JPetStore代码查看它看起来更自动一点。但所有SQL都必须手工编码吗?因为那时我会回到我开始的地方。

Spring有一个很好的,很容易使用界面层(MVC),它很好地将组件绑定在一起。虽然它可用于将ORM集成到应用程序中,但据我所知,它不是一个。

答案 6 :(得分:0)

您没有在Java中自动生成数据库API的部分原因是,作为一种没有宏的编译语言(如Lisp),它无法生成运行时代码。像Ruby这样的动态类型脚本语言具有这种能力。

另一个原因是文化:在过去十年中,J2EE世界倾向于偏好配置而不是传统。这种偏好的主要原因是企业应用程序经常需要处理许多狡猾的假设,这些假设会带来各种“奇怪”的边缘情况。就是这样。这些假设与像Rails这样的新框架所假设的形成鲜明对比。

那就是说,我认为没有什么可以阻止Java ORM API在编译时生成数据库API。我的猜测是Naked Objects更像是你的小巷。

答案 7 :(得分:0)

对我而言,对于复杂后端的最佳选择之一而言,这种语言已经变得更加难以理解。有什么我想念的吗?

原因是Java已在企业中部署的时间。

并不是说Java比Ruby更成熟,只是Java已经被使用了更长时间并且已经被厌恶风险的IT部门证明了。

因此,推荐的一种方法是通过JRuby(+ Rails),因为它运行在Java VM上,IT部门不需要安装或重新配置任何东西......