求職複習系列8 jpa學習2

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) 不回滾
 


分享到:


相關文章: