建立使用JPA的DAO

5.5.3  建立使用JPA的DAO

前面我們把一個實體管理器工廠的引用裝配到JpaTemplate裏,然後把JpaTemplate裝配到DAO。但Spring的JpaDaoSupport簡化這一過程,可以把實體管理器工廠Bean直接裝配到DAO類。

像JdbcDaoSupport和HibernateDaoSupport對相應DAO的作用一樣,JpaDaoSupport也爲使用JPA的DAO提供了方便。如圖5.11所示,使用JPA的DAO類擴展了JpaDaoSupport,並且被注入一個EntityManagerFactory(可以由EntityManagerFactoryBean生成)。JpaDaoSupport在後臺創建一個JpaTemplate,讓DAO可以用來進行數據訪問。爲了利用Spring的JPA DAO支持,我們要讓JpaRantDao從JpaDaoSupport繼承:

  

這樣一來,我們要用entityManagerFactory bean直接裝配JpaRantDao:

  

這樣一來,我們要用entityManagerFactory bean直接裝配JpaRantDao:

  
圖5.11 JpaDaoSupport是使用JPA的DAO類的超類。
它被裝配一個EntityManagerFactory
(由EntityManager工廠bean生成),並且產
生一個JpaTemplate用於數據訪問。
JpaDaoSupport會使用裝配到entityManagerFactory屬性的實體管理器工廠來創建JpaTemplate。在編寫JpaRantDao時,我們可以調用getJpaTemplate()來使用JpaTemplate。舉例來說,下面的saveMotorist()使用JpaDaoSupport的getJpaTemplate()方法來訪問JpaTemplate並且保存Motorist對象:
  

Hibernate和JPA都是不錯的對象/關係映射框架。通過使用ORM,數據訪問的繁瑣細節―SQL語句、數據庫連接和結果集―被隱藏了,我們可以在對象級別處理數據存留問題。但是,ORM在隱藏數據訪問細節的同時,也妨礙(甚至是阻止)了我們對存留進行細緻的控制。

與之相對的是JDBC。在使用JDBC時,我們對數據訪問具有完全的控制,但卻要因此負責繁瑣的連接管理、把結果集映射爲對象。

接下來我們介紹Spring如何與iBATIS集成,這個存留框架致力於在JDBC的絕對控制與ORM的透明映射之間尋求平衡。

發佈了80 篇原創文章 · 獲贊 54 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章