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用於數據訪問。 |
Hibernate和JPA都是不錯的對象/關係映射框架。通過使用ORM,數據訪問的繁瑣細節―SQL語句、數據庫連接和結果集―被隱藏了,我們可以在對象級別處理數據存留問題。但是,ORM在隱藏數據訪問細節的同時,也妨礙(甚至是阻止)了我們對存留進行細緻的控制。
與之相對的是JDBC。在使用JDBC時,我們對數據訪問具有完全的控制,但卻要因此負責繁瑣的連接管理、把結果集映射爲對象。
接下來我們介紹Spring如何與iBATIS集成,這個存留框架致力於在JDBC的絕對控制與ORM的透明映射之間尋求平衡。