2012-01-05 58 views
1

我有兩個域對象,讓我們的人到我們用戶的最佳方式:什麼是使用Spring的JdbcTemplate

  1. 用戶(其中​​有一個人)

FYI :在我們的域名中有人員(人員:-)不是用戶,所以我們不能將它們合併。

我想弄清楚將Person對象填充到User對象中的最佳方法。我已經提出了3種可能的解決方案,並對其他人的做法以及其他人可以看到的利弊感到好奇。

選項1:

有我們的UserDAO和PersonDao的有線到我們Userservice,然後有userService.getUser(userId)呼叫userDAO.getUser(userId)然後拿我們從取回用戶和呼叫user.setPerson(personDao.getPerson(user.getPersonId()))

優點:唐'不得不在電訊局內道(不是那麼糟糕...不知道)

缺點:有些事情似乎錯了關於hav ing dao返回一個沒有完全初始化的域對象嗎?那麼你不得不擔心用戶對象中是否有人。打兩次數據庫。此外,您還必須將personId添加到User對象,而不是僅具有Person對象。

選項2: 有userDAO的的的getUser()方法加入用戶表與人表,然後UserRowMapper設置裏面的用戶,然後調用user.setPerson(personRowMapper.mapRow(rs, rowNum))

優點:不必電線在一道道內道(不是那麼糟......不知道)。此外,您只需擊中數據庫一次,而不是在其他選項中擊中數據庫兩次。

缺點:PersonRowMapper將是它自己的類,不封裝在PersonDao(它應該是?)。

方案3:

有PersonDao的有線到userDAO的,然後就打電話user.setPerson(personDao.getPerson(rs.getLong("person_id")));

優點:該PersonDao的負責獲取個人域對象和userDAO的不需要知道如何檢索此人的詳細信息。

缺點:personDao連接到userDao(是那麼糟糕?)。打兩次數據庫。

回答

1

這是第二種選擇,因爲您指出兩次觸擊數據庫代價高昂。

我有一個建議,而不是它應該是,用戶是一個人(繼承),而不是用戶有一個人(構圖)

+0

感謝您的答覆。我同意...... Marten Deinum也是如此:)。 http://forum.springsource.org/showthread.php?120868-What-is-the-best-way-to-get-our-Person-into-our-User-using-spring-jdbcTemplate&p=395709#post395709。至於用戶是一個人,在大多數情況下是正確的,但我們正在做的事情並不一定如此。再次感謝! – testing123 2012-01-06 15:42:35

相關問題