博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Data JPA之Hello World
阅读量:6688 次
发布时间:2019-06-25

本文共 3796 字,大约阅读时间需要 12 分钟。

Spring Data Jpa 配置

 

使用 Spring Data JPA 进行持久层开发需要的四个步骤:

1.配置 Spring 整合 JPA

2.在 Spring 配置文件中配置 Spring Data,让 Spring 为声明的接口创建代理对象。配置了 <jpa:repositories> 后,Spring 初始化容器时将会扫描 base-package  指定的包目录及其子目录,为继承Repository 或其子接口的接口创建代理对象,并将代理对象注册为 Spring Bean,业务层便可以通过 Spring 自动封装的特性来直接使用该对象。

3.声明持久层的接口,该接口继承  Repository,Repository 是一个标记型接口,它不包含任何方法,如必要,Spring Data 可实现 Repository 其他子接口,其中定义了一些常用的增删改查,以及分页相关的方法。

4.在接口中声明需要的方法。Spring Data 将根据给定的策略(具体策略稍后讲解)来为其生成实现代码。

 

搭建环境

同时下载 Spring Data Commons 和 Spring Data JPA 两个发布包:

Commons 是 Spring Data 的基础包
并把相关的依赖 JAR 文件加入到 CLASSPATH 中
在 Spring 的配置文件中配置 Spring Data

 

项目结构如图:

具体代码如下:

applicationContext.xml

org.hibernate.cfg.ImprovedNamingStrategy
org.hibernate.dialect.MySQL5InnoDBDialect
true
true
update

 

 

接口代码:

package com.atguigu.springdata;    import org.springframework.data.jpa.repository.JpaRepository;    /**  * 1. Repository 是一个空接口. 即是一个标记接口  * 2. 若我们定义的接口继承了 Repository, 则该接口会被 IOC 容器识别为一个 Repository Bean.  * 纳入到 IOC 容器中. 进而可以在该接口中定义满足一定规范的方法.   *   * 3. 实际上, 也可以通过 @RepositoryDefinition 注解来替代继承 Repository 接口  */  /**  * 在 Repository 子接口中声明方法 1. 不是随便声明的. 而需要符合一定的规范 2. 查询方法以 find | read | get 开头 3.  * 涉及条件查询时,条件的属性用条件关键字连接 4. 要注意的是:条件属性以首字母大写。 5. 支持属性的级联查询. 若当前类有符合条件的属性, 则优先使用,  * 而不使用级联属性. 若需要使用级联属性, 则属性之间使用 _ 进行连接.  */  // @RepositoryDefinition(domainClass=Person.class,idClass=Integer.class)  public interface PersonRepsotory extends JpaRepository
{ // 根据 lastName 来获取对应的 Person Person getByLastName(String lastName); }

 

测试代码:

 

package com.atguigu.springdata.test;    import java.sql.SQLException;    import javax.sql.DataSource;    import org.junit.Test;  import org.springframework.context.ApplicationContext;  import org.springframework.context.support.ClassPathXmlApplicationContext;    import com.atguigu.springdata.Person;  import com.atguigu.springdata.PersonRepsotory;    public class SpringDataTest {      private ApplicationContext ctx = null;      private PersonRepsotory personRepsotory = null;        {          ctx = new ClassPathXmlApplicationContext("applicationContext.xml");          personRepsotory = ctx.getBean(PersonRepsotory.class);        }        @Test      public void testSpringData() {            Person person = personRepsotory.getByLastName("ppl");          System.out.println(person);      }        @Test      public void testJpa() {        }        @Test      public void testDataSource() throws SQLException {          DataSource dataSource = ctx.getBean(DataSource.class);          System.out.println(dataSource.getConnection());      }    }

 

 
 
 
参考
http://www.icoolxue.com/play/9080
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/Donnnnnn/p/6266755.html

你可能感兴趣的文章
区块链简单研读笔记
查看>>
为什么 scrum 开发人员是一个 T-形的人 ?
查看>>
使用 CODING 进行 Spring Boot 项目的集成
查看>>
web前端性能优化总结
查看>>
pandas 修改 DataFrame 列名
查看>>
《2018年云上挖矿态势分析报告》发布,非Web类应用安全风险需重点关注
查看>>
leetcode409.Longest Palindrome
查看>>
蚂蚁区块链平台BaaS技术解析与实践
查看>>
Nervos 双周报第 3 期:佛系新年之后的开工大吉!
查看>>
测试开发系类之接口自动化测试
查看>>
【PHP 扩展开发】Zephir 基础篇
查看>>
HTML
查看>>
HashMap浅析?
查看>>
字节跳动开源Go结构体标签表达式解释器,成请求参数校验的杀手锏
查看>>
怎么将在线录制的视频转为GIF动态图
查看>>
js的setTimeout和Promise---同步异步和微任务宏任务
查看>>
【剑指offer】顺时针打印矩阵
查看>>
怎么将图片上传封装成指令?
查看>>
leetcode讲解--861. Score After Flipping Matrix
查看>>
聊聊JavaScript和Scala的表达式 Expression
查看>>