Re: [問題] mvc裡service的用途
請問大家是怎麼實作 service 層的「查詢」?
如果是 CRUD 動作 那還蠻直覺的
id create(A)
void update(A)
A get(id)
void delete(id)
可是查詢動作就複雜許多
最常見的需求是指定多個條件(假設都是and),例如 A.x = 'foo' and A.y = 1
也可更進一步指定 orderBy、paging 條件
再進一步甚至可指定 僅回傳一部分欄位的資料、或是一併抓取某種關係的物件
例如查詢 user,想要一併回傳 user's address 資料
而這些條件通常是來自 url query string
另一個實作目標是想要支援多種DAO實作,即不限定為 RDBMS
我個人的作法是宣告為 List<A> find(QueryParam params)
將 query string 對應至自訂查詢物件 QueryParam
然後 DAO 實作再將 QueryParam 轉換為特定的查詢語法,例如 HQL
對我來說 基本上可滿足大部分的查詢需求
如果是複雜的 join 或是有 and or 夾雜的 就沒辦法了
有一個好處是可以減少 service 的方法數量,以前的作法是
findByX(String x)
findByY(int y)
或是
findByXandY(String x, int y) 但裡面就要判斷 x, y是否為 null
請問有更好的作法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.199.39
※ 文章網址: https://www.ptt.cc/bbs/java/M.1496051440.A.159.html
→
05/29 19:03, , 1F
05/29 19:03, 1F
→
05/29 19:04, , 2F
05/29 19:04, 2F
推
05/29 21:39, , 3F
05/29 21:39, 3F
推
06/01 17:54, , 4F
06/01 17:54, 4F
→
06/01 19:16, , 5F
06/01 19:16, 5F
→
06/01 19:16, , 6F
06/01 19:16, 6F
→
06/01 19:16, , 7F
06/01 19:16, 7F
→
06/01 19:16, , 8F
06/01 19:16, 8F
→
06/01 19:38, , 9F
06/01 19:38, 9F
推
06/02 10:34, , 10F
06/02 10:34, 10F
→
06/02 10:34, , 11F
06/02 10:34, 11F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
0
10
java 近期熱門文章
PTT數位生活區 即時熱門文章