簡體   English   中英

用JDBCDAOSupport擴展DAO是一種不好的做法嗎?

[英]Extending DAO with JDBCDAOSupport, a bad practice?

我已經在互聯網和現實生活中看到了很多例子。 人們在使用Spring框架時使用JDBCDaoSupport擴展了他們的DAO。 從概念上講,擴展或繼承是“是”關系是非常錯誤的。 雖然我們的DAO是DAO,但它不是任何形式的DAOSupport。 通過使用JDBCDaoSupport擴展它,我們使其成為JDBCDaoSupport。 如果有人要使用JDBCDaoSupport,則應按組成而不是繼承的方式使用它。 我對嗎?

您確定不引用Spring的JdbcDaoSupport嗎?

javadoc

基於JDBC的數據訪問對象的便捷超類。 需要設置一個數據源,並通過getJdbcTemplate()方法將基於它的JdbcTemplate提供給子類。

根據實現決策,為什么JdbcDaoSupport使用內部繼承而不是內部繼承,因為DaoSupport是一個抽象類。 這是教科書的繼承,因為DaoSupport充當骨架支持實現,將由Jdbc / Hibernate / Cci DaoSupport類進行子類化。

關於我們為什么要從JdbcDaoSupport擴展Daos而不是使用組合的原因,因此我們可以直接獲取getJdbcTemplate()getDataSource() ,而不必創建自己的基礎結構來公開它們。 在這種情況下,我們不需要Spring提供的此類支持類,因為從某種意義上說,我們的Dao實現可以完成所有工作。 春季提供的這些* DaoSupport類是我們的Daos的非常薄的支持層。

我會以批判的心態來對待“組成還是繼承”選擇,因為在某些合理的情況下,每種方法都最合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM