2

美好的一天,我的情况如下:我正在使用 java 设计一个小型 Web 系统,我在这方面的知识非常有限(主要来自小型教程和 Head and First Servlets 和 JSP Book),结果是产生的结果和无穷无尽的流程关于如何做出好的(和高效的)设计的疑问,唯一 100% 清楚的是 MVC 是必须的(至少在我的情况下)。

读完这篇文章后我对系统应该如何完成有了一个大致的了解。如何实现视图和控制器(以及它们应如何通信)变得清晰起来。

现在,我的问题在于 MVC 模式的模型部分。Java Beans 和 DAO 类是在这里使用的吧?我的应用程序将主要有 CRUD 操作(整个系统中只需要 2 - 3 个额外的数据操作)所以,我应该做 N(我需要访问的表数为 N)Java Bean 对象和 N DAO只有那些具有以下结构的 CRUD 操作的类?

Java 豆:

 public class TableJB{ 
     // Table attributes with their respective getters and setters
 }

道:

 public class TableJB{ 
     public static void create(TableJB jb){}
     public static TableJB read(int id){}
     public static void update(TableJB jb){}
     public static void delete(int id){}
     public static List<TableJB> listAll(){}
 }

我在这种结构中看到的问题是,我将在这些方法中的每一个中进行连接管理(打开和关闭),在我看来这似乎是错误的(好像其他人应该处理这些)并且我不确定是否这是更好的做法。另外我想知道我是否应该在将数据写入数据库之前重新验证数据,以防客户端验证由于某种原因被禁用(例如:通过禁用 JavaScript)?

作为重要说明:我不允许为我的解决方案使用任何框架(所以没有 Spring、Hibernate 等)。

4

2 回答 2

1

首先,您必须在服务器端进行用户输入验证。正如您所说,可以禁用客户端 javascript,因此您不能仅依赖它。客户端验证应被视为推荐但可选的额外内容。

对于您的业务模型和数据库模型,您最好分开考虑这两件事。例如,我会考虑我所有的业务数据,然后遵循面向对象的设计原则并提出一个可靠的类图。作为一项单独的活动,我将遵循数据规范化的原则并提出关系数据库模型 (ERD)。这两个数据模型可能(并且可能应该)看起来彼此不同。最后一步是将 DAO 层设计为两个数据模型之间的桥梁——它可能看起来像是两个模型的混合体。一旦我完成了这三部分的草稿,我将继续迭代和改进。

通常,您将为每个 CRUD 操作打开和关闭数据库连接 - 使用数据库连接池来解决性能问题 - http://wiki.metawerx.net/wiki/DatabaseConnectionAndPoolingQuestions

于 2013-09-27T04:02:17.070 回答
0

当然,在开始编码之前,您应该使用软件工程主体来构建解决方案。Hibernate 是包括打开和关闭连接在内的大量代码重写的解决方案。在连接池中,您需要手动获取和释放连接。

于 2013-09-27T07:01:52.697 回答