From 3fe9a495547fc1a087c8af98529e0320d1e30cc0 Mon Sep 17 00:00:00 2001 From: HyeonJongKim Date: Wed, 8 May 2024 14:18:29 +0900 Subject: [PATCH] =?UTF-8?q?JPA=5FSP=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20Tes?= =?UTF-8?q?t=EC=9A=A9=20Http=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80=20#?= =?UTF-8?q?3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 -- poc/.idea/compiler.xml | 3 +- poc/.idea/dataSources.xml | 12 ++++ poc/.idea/gradle.xml | 9 +++ poc/.idea/misc.xml | 1 + poc/.idea/modules.xml | 1 + poc/.idea/modules/jpa_sp_poc.main.iml | 8 +++ poc/.idea/sqldialects.xml | 6 ++ poc/api-tester/jpa_sp_tester.http | 24 ++++++++ poc/jpa_sp_poc/build.gradle | 18 ++++-- poc/jpa_sp_poc/settings.gradle | 2 +- .../bpgorup/poc}/jpa_sp/ApiResponse.java | 2 +- .../bpgorup/poc}/jpa_sp/JpaSpApplication.java | 4 +- .../jpa_sp/controller}/MainController.java | 55 ++----------------- .../poc/jpa_sp/entity}/MemberEntity.java | 8 +-- .../jpa_sp/repository}/MemberRepository.java | 4 +- .../poc/jpa_sp/request/MemberRequest.java | 19 +++++++ .../jpa_sp/request/UpdateMemberRequest.java | 16 ++++++ .../poc/jpa_sp/service}/MemberService.java | 6 +- .../jpa_sp/Request/MemberRequest.java | 11 ---- .../jpa_sp/Request/UpdateMemberRequest.java | 10 ---- .../src/main/resources/application.properties | 1 - 22 files changed, 127 insertions(+), 99 deletions(-) create mode 100644 poc/.idea/dataSources.xml create mode 100644 poc/.idea/modules/jpa_sp_poc.main.iml create mode 100644 poc/.idea/sqldialects.xml create mode 100644 poc/api-tester/jpa_sp_tester.http rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc => com/bpgorup/poc}/jpa_sp/ApiResponse.java (96%) rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc => com/bpgorup/poc}/jpa_sp/JpaSpApplication.java (70%) rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc/jpa_sp/Controller => com/bpgorup/poc/jpa_sp/controller}/MainController.java (55%) rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc/jpa_sp/Entity => com/bpgorup/poc/jpa_sp/entity}/MemberEntity.java (63%) rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc/jpa_sp/Repository => com/bpgorup/poc/jpa_sp/repository}/MemberRepository.java (87%) create mode 100644 poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/MemberRequest.java create mode 100644 poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/UpdateMemberRequest.java rename poc/jpa_sp_poc/src/main/java/{jpa_sp_poc/jpa_sp/Service => com/bpgorup/poc/jpa_sp/service}/MemberService.java (86%) delete mode 100644 poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/MemberRequest.java delete mode 100644 poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/UpdateMemberRequest.java delete mode 100644 poc/jpa_sp_poc/src/main/resources/application.properties diff --git a/README.md b/README.md index b187053..32340a2 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,3 @@ docker compose up -d # detach mode docker compose -v down # 종료 (-v 옵션 줄 경우 volume 삭제) ``` 2. 프로젝트 실행 - - -## [JPA_SP CRUD] -### JPA를 이용하여 SP 호출을 구현한 PoC -#### 주의 사항 - - resources/procedure.sql 을 별도로 실행하여 SP DB에 저장해야 정상작동 diff --git a/poc/.idea/compiler.xml b/poc/.idea/compiler.xml index e0c09ba..aff84ef 100644 --- a/poc/.idea/compiler.xml +++ b/poc/.idea/compiler.xml @@ -8,8 +8,7 @@ - - + diff --git a/poc/.idea/dataSources.xml b/poc/.idea/dataSources.xml new file mode 100644 index 0000000..44552af --- /dev/null +++ b/poc/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mariadb + true + org.mariadb.jdbc.Driver + jdbc:mariadb://localhost:3307 + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/poc/.idea/gradle.xml b/poc/.idea/gradle.xml index 4947778..3e77f94 100644 --- a/poc/.idea/gradle.xml +++ b/poc/.idea/gradle.xml @@ -12,6 +12,15 @@ + + + \ No newline at end of file diff --git a/poc/.idea/misc.xml b/poc/.idea/misc.xml index a03ad2c..26a3d21 100644 --- a/poc/.idea/misc.xml +++ b/poc/.idea/misc.xml @@ -3,6 +3,7 @@ + diff --git a/poc/.idea/modules.xml b/poc/.idea/modules.xml index 1ba3376..17e3c77 100644 --- a/poc/.idea/modules.xml +++ b/poc/.idea/modules.xml @@ -3,6 +3,7 @@ + diff --git a/poc/.idea/modules/jpa_sp_poc.main.iml b/poc/.idea/modules/jpa_sp_poc.main.iml new file mode 100644 index 0000000..6ed3e63 --- /dev/null +++ b/poc/.idea/modules/jpa_sp_poc.main.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/poc/.idea/sqldialects.xml b/poc/.idea/sqldialects.xml new file mode 100644 index 0000000..5763cca --- /dev/null +++ b/poc/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/poc/api-tester/jpa_sp_tester.http b/poc/api-tester/jpa_sp_tester.http new file mode 100644 index 0000000..26e7cb1 --- /dev/null +++ b/poc/api-tester/jpa_sp_tester.http @@ -0,0 +1,24 @@ +### Create Member +POST http://localhost:8080/create-member +Content-Type: application/json + +{ + "name": "Hong Gil Dong", + "email": "bpGroup@bpsoft.co.kr", + "password": "1234" +} + +### Select All Members +GET http://localhost:8080/all-members + +### Update Member +POST http://localhost:8080/update-member +Content-Type: application/json + +{ + "id": 1, + "name": "Jang Gil San" +} + +### Delete Member +POST http://localhost:8080/delete-member?id=1 diff --git a/poc/jpa_sp_poc/build.gradle b/poc/jpa_sp_poc/build.gradle index 7f7f11e..ca29ab1 100644 --- a/poc/jpa_sp_poc/build.gradle +++ b/poc/jpa_sp_poc/build.gradle @@ -4,7 +4,7 @@ plugins { id 'io.spring.dependency-management' version '1.1.4' } -group = 'JPA_SP' +group = 'com.bpgroup.poc' version = '0.0.1-SNAPSHOT' java { @@ -22,15 +22,23 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' developmentOnly 'org.springframework.boot:spring-boot-devtools' + implementation 'org.springframework.boot:spring-boot-starter-validation' + + //jpa + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + //lombok + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' // db runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' + + + } tasks.named('test') { diff --git a/poc/jpa_sp_poc/settings.gradle b/poc/jpa_sp_poc/settings.gradle index 3338856..20230e7 100644 --- a/poc/jpa_sp_poc/settings.gradle +++ b/poc/jpa_sp_poc/settings.gradle @@ -1 +1 @@ -rootProject.name = 'JPA_SP' +rootProject.name = 'jpa_sp_poc' diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/ApiResponse.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/ApiResponse.java similarity index 96% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/ApiResponse.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/ApiResponse.java index 3a304c6..05ffdef 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/ApiResponse.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/ApiResponse.java @@ -1,4 +1,4 @@ -package jpa_sp_poc.jpa_sp; +package com.bpgorup.poc.jpa_sp; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Getter; diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/JpaSpApplication.java similarity index 70% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/JpaSpApplication.java index bdc0e6b..fa20726 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/JpaSpApplication.java @@ -1,11 +1,9 @@ -package jpa_sp_poc.jpa_sp; +package com.bpgorup.poc.jpa_sp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @SpringBootApplication -@EnableJpaAuditing public class JpaSpApplication { public static void main(String[] args) { diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Controller/MainController.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/controller/MainController.java similarity index 55% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Controller/MainController.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/controller/MainController.java index fb2f947..3f4a3e7 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Controller/MainController.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/controller/MainController.java @@ -1,9 +1,9 @@ -package jpa_sp_poc.jpa_sp.Controller; +package com.bpgorup.poc.jpa_sp.controller; -import jpa_sp_poc.jpa_sp.ApiResponse; -import jpa_sp_poc.jpa_sp.Request.MemberRequest; -import jpa_sp_poc.jpa_sp.Service.MemberService; -import jpa_sp_poc.jpa_sp.Request.UpdateMemberRequest; +import com.bpgorup.poc.jpa_sp.ApiResponse; +import com.bpgorup.poc.jpa_sp.request.MemberRequest; +import com.bpgorup.poc.jpa_sp.request.UpdateMemberRequest; +import com.bpgorup.poc.jpa_sp.service.MemberService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -13,15 +13,6 @@ public class MainController { private final MemberService memberService; - /* - * CREATE PROCEDURE GetAllMember( - * ) - * BEGIN - * SELECT * - * FROM Member; - * END - */ - @GetMapping("/all-members") public ApiResponse allMembers() { try { @@ -31,18 +22,6 @@ public class MainController { } } - /* - * CREATE PROCEDURE CreateMember( - * IN p_name VARCHAR(50), - * IN p_email VARCHAR(50), - * IN p_password VARCHAR(50) - * ) - * BEGIN - * INSERT INTO Member (Name, Email, Password) - * VALUES (p_name, p_email, p_password); - * END - */ - @PostMapping("/create-member") public ApiResponse createMember(@RequestBody MemberRequest request) { try { @@ -52,18 +31,6 @@ public class MainController { } } - /* - CREATE PROCEDURE UpdateMember( - IN p_id BIGINT, - IN p_name VARCHAR(50) - ) - BEGIN - UPDATE Member - SET name = p_name - WHERE id = id; - END - */ - @PostMapping("/update-member") public ApiResponse updateMember(@RequestBody UpdateMemberRequest request) { try { @@ -73,18 +40,6 @@ public class MainController { } } - /* - * CREATE PROCEDURE DeleteMember( - * IN p_id LONG - * ) - * BEGIN - * DELETE - * FROM Member - * WHERE id = p_id ; - * END - * - */ - @PostMapping("/delete-member") public ApiResponse deleteMember(@RequestParam Long id) { try { diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Entity/MemberEntity.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/entity/MemberEntity.java similarity index 63% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Entity/MemberEntity.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/entity/MemberEntity.java index 8e265e4..09f0627 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Entity/MemberEntity.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/entity/MemberEntity.java @@ -1,24 +1,24 @@ -package jpa_sp_poc.jpa_sp.Entity; +package com.bpgorup.poc.jpa_sp.entity; import jakarta.persistence.*; import lombok.Getter; -import lombok.NoArgsConstructor; @Getter -@NoArgsConstructor @Entity @Table(name = "member") public class MemberEntity { - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @Column(name="name", nullable = false) private String name; + @Column(name="email", nullable = false) private String email; + @Column(name="password", nullable = false) private String password; } diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Repository/MemberRepository.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/repository/MemberRepository.java similarity index 87% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Repository/MemberRepository.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/repository/MemberRepository.java index b68257d..709155e 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Repository/MemberRepository.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/repository/MemberRepository.java @@ -1,6 +1,6 @@ -package jpa_sp_poc.jpa_sp.Repository; +package com.bpgorup.poc.jpa_sp.repository; -import jpa_sp_poc.jpa_sp.Entity.MemberEntity; +import com.bpgorup.poc.jpa_sp.entity.MemberEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.query.Procedure; import org.springframework.stereotype.Repository; diff --git a/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/MemberRequest.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/MemberRequest.java new file mode 100644 index 0000000..aba1a67 --- /dev/null +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/MemberRequest.java @@ -0,0 +1,19 @@ +package com.bpgorup.poc.jpa_sp.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class MemberRequest { + + @NotBlank + private String name; + + @NotBlank + private String email; + + @NotBlank + private String password; +} diff --git a/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/UpdateMemberRequest.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/UpdateMemberRequest.java new file mode 100644 index 0000000..04612be --- /dev/null +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/request/UpdateMemberRequest.java @@ -0,0 +1,16 @@ +package com.bpgorup.poc.jpa_sp.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class UpdateMemberRequest { + + @NotBlank + private Long id; + + @NotBlank + private String name; +} diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Service/MemberService.java b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/service/MemberService.java similarity index 86% rename from poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Service/MemberService.java rename to poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/service/MemberService.java index bab107f..4d79229 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Service/MemberService.java +++ b/poc/jpa_sp_poc/src/main/java/com/bpgorup/poc/jpa_sp/service/MemberService.java @@ -1,7 +1,7 @@ -package jpa_sp_poc.jpa_sp.Service; +package com.bpgorup.poc.jpa_sp.service; -import jpa_sp_poc.jpa_sp.ApiResponse; -import jpa_sp_poc.jpa_sp.Repository.MemberRepository; +import com.bpgorup.poc.jpa_sp.ApiResponse; +import com.bpgorup.poc.jpa_sp.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/MemberRequest.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/MemberRequest.java deleted file mode 100644 index 051120b..0000000 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/MemberRequest.java +++ /dev/null @@ -1,11 +0,0 @@ -package jpa_sp_poc.jpa_sp.Request; - -import lombok.Getter; - -@Getter -public class MemberRequest { - - private String name; - private String email; - private String password; -} diff --git a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/UpdateMemberRequest.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/UpdateMemberRequest.java deleted file mode 100644 index 25040db..0000000 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/Request/UpdateMemberRequest.java +++ /dev/null @@ -1,10 +0,0 @@ -package jpa_sp_poc.jpa_sp.Request; - -import lombok.Getter; - -@Getter -public class UpdateMemberRequest { - - private Long id; - private String name; -} diff --git a/poc/jpa_sp_poc/src/main/resources/application.properties b/poc/jpa_sp_poc/src/main/resources/application.properties deleted file mode 100644 index 287ae06..0000000 --- a/poc/jpa_sp_poc/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=jpa_sp_poc \ No newline at end of file