亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 JdbcTemplate 與 CrudRepository 混合是否有意義?

將 JdbcTemplate 與 CrudRepository 混合是否有意義?

森林海 2022-10-20 17:22:12
我非常熟悉JdbcTemplateSpring 的對象(以及一般的 spring-jdbc),我真的很喜歡編寫 SQL 并自己處理對象映射。不過最近我在玩這個CrudRepository界面,我真的很喜歡它。也就是說,當涉及到復雜查詢(連接等)時,我仍然喜歡編寫自己的 SQL 查詢。我希望能夠CrudRepository在也有JdbcTemplate實例的類中使用這些方法,這樣我就可以擁有開箱即用的方法,CrudRepository同時能夠編寫自己的復雜 SQL 并將它們與JdbcTemplate.當然,問題是這CrudRepository只是一個接口,而JdbcTemplate它是一個普通類。所以問題是我提到的任何內容實際上都有意義嗎?假設對 (1) 的回答是肯定的,我如何才能擁有一個具有 a 實例的類,該類JdbcTemplate還提供了一個實現,CrudRepository而不必過多地破解它?
查看完整描述

2 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

在任何應用程序中混合 JPA 和 JDBC 是非??赡艿????a >JdbcTemplate用于編寫復雜的查詢或進行更復雜的自定義映射。另一種選擇是使用 a RowCallbackHandler(而不是RowMapper直接將某些內容流式傳輸到文件或其他資源,以保留內存)。

使用 Spring Data 時,您可以使用@Query注釋在存儲庫中編寫自定義查詢。這可以是本機查詢或 JPQL。

但是,Spring 中沒有任何東西可以阻止您在一個類中同時使用它們。您可以直接將您的存儲庫注入服務以及JdbcTemplate(或者如果您愿意,您可以將其放在另一個外觀后面)。

@Service

@Transactional

public class YourService {


    private final YourCrudRepository repo;

    private final JdbcTemplate jdbc;


    public YourService(YourCrudRepository repo, JdbcTemplate jdbc) {

        this.repo=repo;

        this.jdbc=jdbc;

    }


    // Your methods go down here

}

現在您可以同時使用兩者。Spring 的好處在于,無論使用CrudRepository或 ,JdbcTemplate它都會拋出相同的異常,DataAccessException. 如果它們在同DataSource一個上運行,JpaTransactionManager則足以管理連接和事務。


查看完整回答
反對 回復 2022-10-20
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

為什么不把他們當成會員呢?


public class MyDao {

    private JdbcTemplate template;

    private CrudRepository repository;

}

當然,您需要通過所有方法,這對嘈雜很友好。Dao將是刻板印象數據訪問對象。


查看完整回答
反對 回復 2022-10-20
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號