求职复习系列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) 不回滚
 


分享到:


相關文章: