JPA는 무엇입니까?
JPA (Java Persistence API)는 Sun이 공식적으로 제안한 Java Persistence 사양입니다. Java 개발자에게 Java 응용 프로그램의 관계형 데이터를 관리하기위한 객체/연관 매핑 도구를 제공합니다. 그의 외모는 주로 기존 지속적인 개발 노력을 단순화하고 ORM 기술을 통합하는 것입니다.
Spring Data JPA는 ORM 프레임 워크 및 JPA 사양을 기반으로 스프링으로 캡슐화 된 JPA 응용 프로그램 프레임 워크로, 개발자는 미니멀리스트 코드를 사용하여 데이터에 액세스하고 작동 할 수 있습니다. 추가, 삭제, 수정 및 검색을 포함한 일반적인 기능을 제공하며 확장하기 쉽습니다! 스프링 데이터 학습 및 사용 JPA는 개발 효율성을 크게 향상시킬 수 있습니다!
jdbctemplate을 사용하여 스프링 부팅에서 데이터베이스에 액세스하십시오
데이터 소스 구성
먼저, 데이터베이스에 연결하려면 JDBC 지원을 도입해야하며 다음 구성이 pom.xml에 소개됩니다.
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터 -jdbc </artifactid> </fectionency>
임베디드 데이터베이스 지원
임베디드 데이터베이스는 일반적으로 개발 및 테스트 환경에서 사용됩니다. Spring-Boot는 H2, HSQL 및 Derby를 포함한 자동 구성 임베디드 데이터베이스를 제공하며 사용할 연결 구성을 제공 할 필요가 없습니다.
H2의 종속성과 같은
<pectionency> <groupid> com.h2database </groupid> <artifactid> h2 </artifactid> <cope> 런타임 </scope> </fectionency>
MySQL 데이터베이스 지원
<pectionency> <groupid> mysql </groupid> <artifactid> mysql-connector-java </artifactid> <버전> 5.1.38 </version> </fectionency>
구성 정보 편집
SRC/Main/Resources/Application.Properties에서 데이터 소스 정보를 구성하십시오
spring.datasource.url = jdbc : mysql : // localhost : 3306/testspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driver class-name = com.mysql.jdbc.driver
jdbctemplate을 사용하여 데이터베이스를 작동하십시오
Spring의 jdbctemplate는 자동으로 구성되어 있으며 @autowired를 사용하여 자신의 Bean에 주입 할 수 있습니다.
jdbctemplate를 통해 Demoservice에서 정의 된 데이터 액세스 작업 구현
@ServicePublic 클래스 Demoserivce {@autowired private jdbctemplate jdbctemplate; public void create (문자열 이름, 정수 시대) {jdbctemplate.update ( "데모에 삽입 (이름, 나이) 값 (?)", 이름, 나이); } public void deletebyName (String name) {jdbctemplate.update ( "demowhere name =?", name); } public integer getAlldemo () {return jdbctemplate.queryForObject ( "데모에서 count (1)을 선택한 (1), integer.class); } public void deletealldemo () {jdbctemplate.update ( "데모에서 삭제"); }}사용자 서비스에 대한 단위 테스트 케이스를 작성하여 생성, 삭제 및 쿼리를 통해 데이터베이스 작업의 정확성을 확인하십시오.
테스트 사례는 종속성을 높여야합니다
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링 부트 스타터-테스트 </artifactid> <cope> test </scope> </fectionency>
테스트 코드
@runwith (springJunit4classRunner.class) @SpringApplicationConfiguration (main.class) 공개 클래스 응용 프로그램 {@autowired private demoserivce demoserivce; @public void setup () {// 준비, 테이블 Demoserivce.deletealldemo (); } @test public void test ()는 예외를 던져 {// 삽입 5 demoserivce.create ( "a", 1); demoserivce.create ( "b", 2); demoserivce.create ( "c", 3); demoserivce.create ( "d", 4); demoserivce.create ( "e", 5); assert.assertequals (5, demoserivce.getalldemo (). intvalue ()); demoserivce.deletebyname ( "a"); demoserivce.deletebyName ( "e"); // 데이터베이스를보고 5 assert.assertequals (3, demoserivce.getalldemo (). intvalue ())가 있어야합니다. }}스프링 부팅에서 스프링-다타 -JPA 사용
이러한 많은 양의 지루한 데이터 작동 문을 해결하기 위해, 우리가 가장 먼저 생각하는 것은 다음과 같은 ORM 프레임 워크를 사용하는 것입니다. 최대 절전 모드를 통합 한 후 마침내 Java 엔티티를 조작하는 방식으로 데이터 변경 사항을 데이터베이스 테이블에 매핑합니다.
각 Java 엔티티를 추상화하는 기본 "첨가, 삭제, 수정 및 검색"작업을 해결하기 위해 일반적으로 템플릿을 일반적인 방식으로 캡슐화하여 추상화하고 단순화하지만 여전히 편리하지는 않습니다. 특정 엔티티의 일반 템플릿에서 상속 된 인터페이스를 작성한 다음 인터페이스 구현을 작성해야합니다. 일부 기본 데이터 액세스는 잘 재사용 될 수 있지만 코드 구조에는 각 엔터티에 대한 많은 인터페이스와 구현이 있습니다.
템플릿의 구현으로 인해 이러한 특정 엔티티의 레이어는 매우 "얇아졌습니다". 일부 특정 엔터티의 구현은 템플릿에 대한 간단한 대리 일 수 있으며, 이러한 구현 클래스는 종종 많은 엔티티에 나타날 수 있습니다. Spring-Data-JPA의 출현으로 인해 이미 "얇은"데이터 액세스 계층이 인터페이스 레이어를 작성하는 방법이 될 수 있습니다.
사용 방법
종속성을 추가하십시오
<의존성 <groupid> org.springframework.boot </groupid> <artifactid> Spring-boot-starter-data-jpa </artifactid> </fectionency>
구성 정보 편집
SRC/Main/Resources/Application.Properties에서 데이터 소스 정보를 구성하십시오
spring.datasource.url = jdbc : mysql : // localhost : 3306/testspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.jpa.properties.hibernate.hbm2ddl.auto = 업데이트
spring.jpa.properties.hibernate.hbm2ddl.auto는 최대 절전 모드의 구성 속성입니다. 주요 기능은 데이터베이스 테이블 구조를 자동으로 작성, 업데이트 및 확인하는 것입니다. 이 매개 변수의 여러 구성은 다음과 같습니다
엔티티를 만듭니다
@EntityPublic 클래스 Demoentity {@id @generatedValue Private Long ID; 개인 문자열 제목; 개인 문자열 내용; public demoentity () {} public demoentity (문자열 제목, 문자열 내용) {this.title = title; this.content = 내용; } // 생략 설정}}DAO를 만듭니다
public interface demorepository는 jparepository <demoentity, long> {demoentity findbytitle (String title); Demoentity findByTitleAndContent (문자열 제목, 문자열 내용); // @Query ( "U.content = : content") @Query ( "u.content = : content") demoentity sqlfind (@param ( "content");};};SQL로 테이블 이름을 쓰지 말고 엔티티 이름은 자동으로 테이블 이름으로 변환됩니다.
메소드 이름을 구문 분석하여 쿼리를 만듭니다
위의 FindByTitle (String Title) 및 FindByTitleAndContent (문자열 제목, 문자열 내용)는 쓰여지지 않지만 프레임 워크는 위 쌍의 이름에 따라 자동으로 SQL을 생성합니다.
단위 테스트
@RunWith (SpringJunit4classRunner.class) @SpringApplicationConfiguration (main.class) 공개 클래스 UnitTest {@autowired demorepository demorepository; @test public void test () {for (int i = 0; i <10; i ++) {demorepository.save (new demoentity ( "title"+i, "content"+i)); } assert.assertequals (10, demorepository.findall (). size ()); } @test public void testfindbytitle () {demoentity res = demorepository.findbytitle ( "title8"); assert.assertequals ( "title8", res.getTitle ()); } @test public void testfindbyTitleAndContent () {demoentity res = demorepository.findbyTitleAndContent ( "title9", "content9"); assert.assertequals ( "title9", res.getTitle ()); assert.assertequals ( "content9", res.getContent ()); } @test public void testsqlfind () {demoentity res = demorepository.sqlfind ( "content7"); assert.assertequals ( "content7", res.getContent ()); }}요약
위의 내용은 스프링 부트에서 스프링-데이터 -JPA 사용에 대한 편집자의 소개이며 데이터베이스에 신속하게 액세스 할 수 있습니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!