使用Spring / Hibernate的CQS模式

时间:2016-07-09 09:32:47

标签: java spring hibernate command-query-separation

我正在开发符合bool move(int tile) { int temp; int didSwap; int blankRow; int blankCol; // search for blank tile for (int row = 0; row < d; row++) { for (int col = 0; col < d; col++) { if (board[row][col] == 0) { blankRow = row; blankCol = col; } } } // check that tile is not too big or too small if (tile > d * d - 1 || tile < 1) { return false; } // search for blank tile for (int row = 0; row < d; row++) { didSwap = 0; for (int col = 0; col < d; col++) { if (tile == board[blankRow + 1][blankCol] && tile != board[d + 1][d]) { temp = board[blankRow][blankCol]; board[blankRow][blankCol] = tile; tile = temp; didSwap = 1; return true; } else if (tile == board[blankRow - 1][blankCol] && tile != board[d - 1][d]) { temp = board[blankRow][blankCol]; board[blankRow][blankCol] = tile; tile = temp; didSwap = 1; return true; } else if (tile == board[blankRow][blankCol + 1] && tile != board[d][d + 1]) { temp = board[blankRow][blankCol]; board[blankRow][blankCol] = tile; tile = temp; didSwap = 1; return true; } else if (tile == board[blankRow][blankCol - 1] && tile != board[d][d + 1]) { temp = board[blankRow][blankCol]; board[blankRow][blankCol] = tile; tile = temp; didSwap = 1; return true; } else { return false; } } } return false; } Java)模式的Spring / Hibernate / CQS个应用程序。

简单地说:

  • 我们的Query Command Separation仅由domain model使用,它描述了需要在域模型上执行的某些操作;
  • 所有阅读操作均由绕过Commands的{​​{1}}完成,因此可以根据用例优化(使用QueryService)每个查询。


域模型使用domain model映射到projection数据库。

我知道有关域与持久性模型之间分离的长期争论。但是,我确信现在Hibernate变得如此灵活,以至于你不必在领域模型上做出艰难的牺牲。这样,您就无法在域和持久性模型之间进行一对一映射。 此外,所有与数据库相关的内容都可以通过使用Layer Supertypes来抽象出来。


我的问题:

  1. 如果我在MySQL中使用投影Hibernate Hibernate(或Query),我实际上使用的是我的域模型而不是纯SQL。 这不是违反Criteria模式......
  2. 我可以选择在我的QueryService中使用纯SQL。有没有好的SQL框架可以让我在不使用域模型的情况下构建查询并轻松地将结果绑定到JavaBeans ?结果通常是图形,因此将这些结构轻松绑定到某些嵌套的JavaBean结构会很不错。

0 个答案:

没有答案