网站基础架构 - DBMS到浏览器层

时间:2011-11-10 14:10:28

标签: grails orm struts web

我正在为网站构建和构建一些分析工具。

我希望后端使用Apache,MySQL和Java。数据集大小适中:1K到10K用户,最多可添加1M条记录

前端将使用HTML,CSS,javascript,jQuery和一些jQuery插件。我们将有几十个网页,所有数据都被驱动。

我的主要标准是我希望它易于构建,特别是易于修改,因为它是一个新概念,需要时间来完善。

然后我有两个问题。

  1. ORM:我们可以使用Hibernate,我知道Hibernate被广泛使用且非常实用。但我也知道这有点麻烦并且存在性能问题。是否还有其他ORM需要推荐?
  2. Web应用程序框架:Java Servlet很好,但是我使用了JSP,我不喜欢它们嵌入Java和HTML的方式,因此难以对Java进行单元测试,并且更改任何内容。我正在考虑的替代方案是Struts,Wicket(但坦白地说,我编辑大型XLM文件很痛苦)和Grails。 Grails包括Grails对象关系映射(GORM),它使用Hibernate。还有其他人要考虑吗?你会用什么?
  3. 由于 甲

3 个答案:

答案 0 :(得分:3)

  

ORM:我们可以使用Hibernate,我知道Hibernate被广泛使用且非常实用。   但我也知道它有点麻烦并且存在性能问题。

我不同意Hibernate被广泛认为是繁琐或有性能问题。你有证据支持这些说法吗?

  

Web应用程序框架:Java Servlet很好,但我使用过JSP   而且我不喜欢它们嵌入Java和HTML的方式,这让它变得困难   单元测试Java,并改变任何东西。替代方案我是   考虑是Struts,Wicket(但是,坦率地说,我正在编辑大型XLM文件   是痛苦的)和Grails。 Grails包括Grails Object Relational   映射(GORM),它使用Hibernate。还有其他人要考虑吗?   你会用什么?

JSP开发的推荐做法是将视图逻辑封装在标记中,并在JSP中使用标记,而不是将scriptlet(Java)代码直接放在JSP中。

有许多潜在的Java Web框架需要考虑。如果您正在寻找一个成熟的,广泛使用的,文档齐全的架构Java框架,我会选择SpringMVC。如果你愿意考虑更先进的东西,Play框架值得一看。

就个人而言,我会使用Grails,但我已经非常了解Groovy / Grails,这可能不适合你。

更新

正如Todd在下面的评论中指出的那样,GORM现在可以被认为是一个抽象持久性API。虽然默认实现使用Hibernate,但也可以(通过安装插件)使用JPA或各种NoSQL数据库。

答案 1 :(得分:2)

  

ORM:我们可以使用Hibernate,我知道Hibernate被广泛使用   功能。但我也知道它有点麻烦而且有   性能问题。是否还有其他ORM需要推荐?

我不同意hibernate“麻烦而且存在性能问题”的断言。可以将Hibernate调整到很高的程度,以获得一些非常快速的数据访问。此外,其他因素也会显着影响数据访问性能,例如正确的查询设计,索引和缓存。毫无疑问,当使用hibernate(或任何数据访问层)时,需要知识渊博的人才能获得最后一滴性能,但技术本身并不像你描述的那样。

  

Grails包括使用的Grails对象关系映射(GORM)   休眠。还有其他人要考虑吗?你会用什么?

Spring为开发Web应用程序提供了完整的MVC堆栈。你可以使用它作为完整的堆栈,它可以很好地使用jQuery(或你想要的任何JS框架)。

Grails也是一项伟大的技术。它同时使用Spring和Hibernate,并通过为您处理大量配置使事情变得更容易。如果您了解Spring和Hibernate,那么演变为Grails使用是一个自然的步骤。如果您具有基础技术的先验知识,您将必须学习它们以有效地使用Grails。最重要的是,如果你知道你在使用Grails做什么,你可以快速移动

答案 2 :(得分:0)

  

Web应用程序框架:Java Servlet没问题,但是我使用了JSP,我不喜欢它们嵌入Java和HTML的方式,因此难以对Java进行单元测试,并且更改任何内容。我正在考虑的替代方案是Struts,Wicket(但是,坦率地说,我编辑大型XLM文件很痛苦)

不确定我理解你,但如果我这样做,我想澄清一下:Apache Wicket不需要“编辑大[XML]文件”。它严格来说是Java和HTML。如果您已经了解面向对象的Java(并且喜欢它),那么Wicket非常适合您。

此外,如果您的大多数应用程序需要一个持久存储在数据库中的域模型的CRUD前端,那么您应该认真考虑Spring Roo。它为您完成了很多工作 - 持久性,配置,甚至可以使用一些命令生成CRUD Web UI。可以把它想象成与Rails相当的Java。