우리는 이전 기사에서 간단한 스프링 부츠 응용 프로그램을 구축했으며, 이는 데이터베이스를 운영하기 위해 Spring-Data-JPA의 사용을 소개합니다.
데이터베이스를 SpringBoot라고하는 새 MySQL 데이터베이스를 작성하고 예제 작업의 테이블 개체로서 user_info 데이터 테이블을 만듭니다.
user_info 정보는 다음과 같습니다.
드롭 테이블이 존재하는 경우`user_info`; 작성 테이블`user_info` (`us use_info` (11) NOT NOL NOT NOR NOT NOR NOT AUTO_INCREMENT,`사용자 이름 'VarCHAR (255) 기본 NULL,`PASSBEST'VARCHAR (255) 기본 NULL, 1 차 키 (`ID`)) 엔진 = MYISAM AUTO_INCREMENT = 3 UTF8; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- user_info-- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
데이터베이스와 테이블이 성공적으로 생성 된 후 프로젝트로 돌아갑니다.
단계 0 : 먼저 MySQL 및 JPA의 Maven 의존성 패키지를 소개합니다.
<pectionency> <groupId> mySQL </groupId> <artifactID> mySQL-connector-java </artifactID> </expendency> <pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링-부트-스테이터 data-jpa </artifactid>
첫 번째 단계는 YML 구성 파일에서 데이터베이스 연결 정보를 구성하는 것입니다.
Spring : DataSource : Driver-Class-Name : com.mysql.jdbc.driver URL : jdbc : mysql : // localhost : 3306/springboot? useUnicode = true & charac
두 번째 단계는 데이터 테이블 엔티티 맵에 해당하는 엔티티 클래스를 만드는 것입니다.
package com.javazhiyin; import javax.persistence.entity; import javax.persistence.generatevalue; import javax.persistence.generationtype; import javax.persistence.id;/*** 2018/7/4에서 57783에 의해 생성되었습니다. GenerationType.Identity) 개인 정수 ID; 개인 문자열 사용자 이름; 개인 문자열 비밀번호; 공개 정수 getId () {return id; } public void setId (정수 ID) {this.id = id; } public String getUserName () {return username; } public void setusername (String username) {this.username = username; } public String getPassword () {return password; } public void setpassword (문자열 비밀번호) {this.password = password; } public userInfo () {}}세 번째 단계는 저장소 클래스를 만들고 jparepository 클래스를 상속하는 것입니다.
package com.javazhiyin; import org.springframework.data.jpa.repository.jparepository;/*** 2018/7/4에서 57783에 의해 생성 된/***/***/public interface userinforepository jparepository <UserInfo, Integer> {}.여기서 우리는 JParePository 클래스를 물려받으며 데이터베이스 작업을위한 몇 가지 기본 방법을 캡슐화합니다. 소스 코드를 통해 jparepository에서 사용할 수있는 메소드를 확인해 봅시다.
///// Intellij Idea에 의해 .class 파일에서 재현 된 소스 코드 // (Fernflower decompiler에 의해 구동) // package org.springframework.data.repository; import java.util.optional; @norepositorybeanpublic interface crudrepository <t, id> intends <t> s save t, extends t t t t t t t t t t t t t. <s는 t> iterable <s> saveall (iterable <s> var1)을 연장합니다. 옵션 <t> findByid (id var1); 부울이 존재한다 (Id var1); 반복 가능한 <t> findall (); 반복 가능한 <t> findAllByid (반복 가능한 <id> var1); 긴 카운트 (); void deleteById (id var1); void delete (t var1); void deleteall (반복 가능한 <? extends t> var1); void deleteall ();}
4 단계 : 데이터베이스 추가, 삭제, 수정 및 확인의 작동을 구현하려면 새 컨트롤러를 만듭니다.
package com.javazhiyin; import org.springframework.bean.beans.beans.annotation.autowired; import org.springframework.web.bind.annotation.*; import java.util.list;/*** 2018/7/4에서 57783에 의해 생성 된 ustontollerpublic vereanfocontoller verired ontoller verired. userinforepository userinforepository; /*** check* @return*/@getMapping (value = "/list") public list <userInfo> getUserList () {return userInforepository.findall (); }/** * 추가 * @param username * @param password * @return */@postmapping (value = "/adduser") public userInfo addUser (@requestParam ( "username") String username, @requestparam ( "password") {userInfo user = new userInfo (); user.setusername (사용자 이름); user.setpassword (비밀번호); return userinforepository.save (user); }/** * change * @param id * @param username * @param password * @return */@putmapping (value = "upduser/{id}") public userInfo upduser (@PathVariable ( "id") Integer ID, @requestParam ( "UserName") 문자열 username, @requestparam ( "password") {string "). userInfo (); user.setid (id); user.setusername (사용자 이름); user.setpassword (비밀번호); return userinforepository.save (user); }/*** delete* @param id*/@deletemapping (value = "deLuser/{id}") public void deLuser (@PathVariable ( "id") 정수 ID) {userInfo user = new userInfo (); user.setid (id); userinforepository.delete (사용자); }}위의 코드를 테스트하기 위해 Postman을 사용하여 테스트합니다. 매우 편리합니다.
쿼리 테스트 :
새로운 테스트 :
테스트 수정 :
테스트 삭제 :
모든 테스트가 통과 될 수 있음을 알 수 있습니다. SpringBoot는 Spring-Data-JPA를 사용하여 추가, 삭제, 수정 및 확인 작업이 실제로 매우 편리합니다.
몇 가지 질문 :
1. 개체 엔티티 매핑 클래스에서 주석의 개념과 사용 @generatedValue는 무엇입니까?
JPA에는 각 엔티티 엔티티가 하나의 기본 키 만 가지고 있어야하며 @generatedValue 주석은 엔터티의 고유 한 식별 된 기본 키를 생성해야합니다.
JPA는 열거 클래스 GenerationType에 정의 된 4 가지 주요 주요 생성 전략을 제공합니다.
GenerationType.table
특정 데이터베이스 테이블을 사용하여 기본 키를 저장하면 지속성 엔진은 관계형 데이터베이스의 특정 테이블을 통해 기본 키를 생성합니다. 이 전략의 장점은 외부 환경 및 데이터베이스의 특정 구현에 의존하지 않으며 다른 데이터베이스간에 쉽게 포팅 할 수 있다는 것입니다. 그러나 데이터베이스의 특성을 완전히 활용할 수는 없으므로 먼저 사용되지 않습니다.
GenerationType.Sequence
Oracle과 같은 일부 데이터베이스에서는 기본 키 자체 성장이 지원되지 않습니다. 기본 키를 생성하기위한 "시퀀스"라는 메커니즘을 제공합니다. 현재 GenerationType.Sequence는 주요 주요 생성 정책으로 사용할 수 있습니다. 이 전략의 결점은 정확히 테이블의 반대입니다. 일부 데이터베이스 (Oracle, PostgreSQL, DB2) 만 지원 시퀀스 객체 만 있으므로이 전략은 일반적으로 다른 데이터베이스에 적용되지 않습니다.
GenerationType.identity
주요 주요 자체 성장 전략. 데이터베이스가 데이터를 삽입하면 기본 키에 값을 자동으로 할당합니다. 예를 들어, MySQL은 기본 키 자체 성장을 지정하기위한 테이블을 작성할 때 "Auto_Increment"를 선언 할 수 있습니다. 이 정책은 대부분의 데이터베이스 (지정된 메소드 또는 키워드가 다를 수 있음)에서 지원되지만이를 지원하지 않는 몇 가지 데이터베이스가 있으므로 휴대가 약간 덜 휴대합니다.
GenerationType.AUTO
기본 키 생성 전략을 지속성 엔진에 맡기십시오. Persistence Engine은 데이터베이스를 기반으로 위의 세 가지 주요 주요 생성 전략 중 하나를 선택합니다. 이 주요 주요 생성 전략이보다 일반적으로 사용됩니다. JPA의 기본 생성 전략은 GenerationType.Auto 이므로이 전략 또는 @generatedValue를 직접 사용할 때 @generatedValue (ratchore = generationtype.auto)를 명시 적으로 지정할 수 있습니다.
2. 스프링 데이터 JPA가 제공하는 인터페이스와 어떤 기능을 구현할 수 있습니까?
이 기사에서 실행할 수있는 소스 코드 : https://github.com/javazhiyin/springboot/tree/master/bootdemo_01
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.