【问题标题】:CRUD operations template in javajava中的CRUD操作模板
【发布时间】:2016-04-16 14:05:24
【问题描述】:

我正在设计一个系统,我必须在系统实体之间执行多个 CRUD 操作。只是为了确保我在论坛中搜索过它是如何被其他人解决的。

我找到了 4 个“模式”。他们都同意 READ 操作,所以我跳过它们。我将定义模式:

模式 1

void add(E entity);
void update(E entity);
// Read operations...
void delete(E entity);

模式 2

E create(<ListOfEntityProperties>);
void update(E entity);
// Read operations...
void delete(E entity);

模式 3

boolean add(E entity);
boolean update(E entity);
// Read operations...
boolean delete(E entity);

模式 4

E add(E entity);
void update(E entity);
// Read operations...
void delete(E entity);

我不明白每个人的区别和优点/缺点(也没有人解释)。每个 "pattern" 之间有什么区别?使用什么标准?有人可以证明何时使用一种或另一种方式(或给我另一个想法)吗?

提前感谢您的回答

【问题讨论】:

  • 这个问题的答案取决于您的需求,并且主要基于意见。没有“一个”模式,我见过这些模式的组合。
  • 就是这样,你能说一下什么时候使用每个吗?我认为,如果您有特定的需求,就没有值得发表的意见。问题是我没有意识到在一个或另一个之间选择什么标准。你明白我的意思吗?

标签: java design-patterns crud


【解决方案1】:

以模式 3 为例,您将使用布尔值来了解是否成功删除或添加了某些内容。删除的案例是可以的,但对于添加或更新的案例,您可能希望返回具有数据库分配 id 的对象,这看起来像模式 4。

如果要批量插入对象,那就是模式 2。

如果您不希望从 CRUD 操作中返回任何内容,请创建方法 void

您想要返回的值是重要部分,“模式”并不重要,它们完全取决于底层 API 的使用。例如,SQL Server 插入操作可能会返回插入对象的行 ID。在这种情况下,您可以只返回 ID,或作为参数传递的相同对象,但设置了 ID 字段。

【讨论】:

  • 非常感谢,这些都是很好的标准。只是为了添加一些东西,我刚刚看了 Spring 的 CrudRepository Interface 并使用了类似 Pattern 4 的东西:E save(E entity); void delete(E entity),其中 save() 用于添加和更新(或者至少我理解它那样)
【解决方案2】:

只是问,你为什么要编写\设计你自己的实现。 我为此使用了 java-ee 注释。

参考: https://docs.oracle.com/javaee/6/api/javax/ws/rs/package-summary.html http://www.techferry.com/articles/RESTful-web-services-JAX-RS-annotations.html

你也可以参考他们的实现。

【讨论】:

  • 我没有在这个应用程序中创建服务来使用前端(如 Angular.js 或其他东西),我希望这些方法是对 Hibernate 的 API 的简单调用,因为我'正在使用这个框架进行持久化。我看到一些教程和不同的持久化方法签名被使用,所以我产生了疑问,你知道我的意思吗?希望能回答你的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
相关资源
最近更新 更多