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