Spring Data Jpa
簡述
訪問數據庫,
JPA 與spring data JPA 和hibernate的關係
JPA是一套規範,內部是有接口和抽象類組成的。hibernate是一套成熟的ORM框架,而且Hibernate實現了JPA規範,所以也可以稱hibernate為JPA的一種實現方式,我們使用JPA的API編程,意味著站在更高的角度上看待問題(面向接口編程)
Spring Data JPA是Spring提供的一套對JPA操作更加高級的封裝,是在JPA規範下的專門用來進行數據持久化的解決方案。
簡單配置
4.2.4.RELEASE 5.0.7.Final 1.6.6 1.2.12 0.9.1.2 5.1.6 junit junit 4.9 test org.aspectj aspectjweaver 1.6.8 org.springframework spring-aop ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-orm ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-core ${spring.version} org.hibernate hibernate-core ${hibernate.version} org.hibernate hibernate-entitymanager ${hibernate.version} org.hibernate hibernate-validator 5.2.1.Final c3p0 c3p0 ${c3p0.version} log4j log4j ${log4j.version} org.slf4j slf4j-api ${slf4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} mysql mysql-connector-java ${mysql.version} org.springframework.data spring-data-jpa 1.9.0.RELEASE org.springframework spring-test 4.2.4.RELEASE javax.el javax.el-api 2.2.4 org.glassfish.web javax.el 2.2.4
spring和spring jpa的配置
配置映射關係
編寫dao接口
實現規範
實現接口(JpaRepository JpaSpecificationExecutor) public interface DeptDao extends JpaRepository , JpaSpecificationExecutor{ } 提供相應的泛型 測試 //spring下測試 @RunWith(SpringJunit4ClassRunner.class)//聲明spring的測試單元環境 @ContextConfiguration(locations="classpath:appliaction.xml") //指定spring的配置信息 public class TestDemo1{ @Autowired public DeptDao deptDao; @Test public void testadd(){ findOne(id)根據id查詢 save(entity):保存或者更新(依據:傳遞的實體類對象中,是否包含id屬性) delete(id) :根據id刪除 findAll() : 查詢全部 } } 複雜查詢 count()//返回數量 exists(id)// 返回boolean 查看是否存在id getOne(id)//根據id查詢數據庫 加上事務 @Transaction getReference 延遲加載 jpql的查詢方式 在接口方法中 //@Query 使用jpql的方式查詢。 @Query(value="from entity") public List findAllEntity(); //@Query 使用jpql的方式查詢。?1代表參數的佔位符,其中1對應方法中的參數索引 @Query(value="from entity where name = ?1") public Customer findEntity(String custName); sql語句查詢 nativeQuery : 使用本地sql的方式查詢 @Query(value="select * from cst_customer",nativeQuery=true) public void findSql(); 條件查詢 使用本地sql語句 更新 @Query(value="update Dept set dname=?1 where deptno=?2") @modifying//修改需要的註解 public void updateDept(String dname,long deptno); 方法調用 @Transactional springDataJpa中使用jpql完成修改或刪除,默認完成後會回滾, 需要添加@Rollback(value=false) 不回滾
關鍵字: artifactId JPA spring.version