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/JpaSpApplication.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java index bdc0e6b..dfac919 100644 --- a/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java +++ b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/JpaSpApplication.java @@ -5,7 +5,6 @@ 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/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/java/jpa_sp_poc/jpa_sp/Controller/MainController.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/controller/MainController.java similarity index 57% 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/jpa_sp_poc/jpa_sp/controller/MainController.java index fb2f947..18c1a26 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/jpa_sp_poc/jpa_sp/controller/MainController.java @@ -1,9 +1,9 @@ -package jpa_sp_poc.jpa_sp.Controller; +package jpa_sp_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 jpa_sp_poc.jpa_sp.request.MemberRequest; +import jpa_sp_poc.jpa_sp.service.MemberService; +import jpa_sp_poc.jpa_sp.request.UpdateMemberRequest; 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/jpa_sp_poc/jpa_sp/entity/MemberEntity.java similarity index 66% 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/jpa_sp_poc/jpa_sp/entity/MemberEntity.java index 8e265e4..39fd37c 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/jpa_sp_poc/jpa_sp/entity/MemberEntity.java @@ -1,24 +1,25 @@ -package jpa_sp_poc.jpa_sp.Entity; +package jpa_sp_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/jpa_sp_poc/jpa_sp/repository/MemberRepository.java similarity index 88% 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/jpa_sp_poc/jpa_sp/repository/MemberRepository.java index b68257d..99a5e60 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/jpa_sp_poc/jpa_sp/repository/MemberRepository.java @@ -1,6 +1,6 @@ -package jpa_sp_poc.jpa_sp.Repository; +package jpa_sp_poc.jpa_sp.repository; -import jpa_sp_poc.jpa_sp.Entity.MemberEntity; +import jpa_sp_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/jpa_sp_poc/jpa_sp/request/MemberRequest.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/request/MemberRequest.java new file mode 100644 index 0000000..c014155 --- /dev/null +++ b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/request/MemberRequest.java @@ -0,0 +1,19 @@ +package jpa_sp_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/jpa_sp_poc/jpa_sp/request/UpdateMemberRequest.java b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/request/UpdateMemberRequest.java new file mode 100644 index 0000000..639dcd5 --- /dev/null +++ b/poc/jpa_sp_poc/src/main/java/jpa_sp_poc/jpa_sp/request/UpdateMemberRequest.java @@ -0,0 +1,16 @@ +package jpa_sp_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/jpa_sp_poc/jpa_sp/service/MemberService.java similarity index 91% 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/jpa_sp_poc/jpa_sp/service/MemberService.java index bab107f..8c8d377 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/jpa_sp_poc/jpa_sp/service/MemberService.java @@ -1,7 +1,7 @@ -package jpa_sp_poc.jpa_sp.Service; +package jpa_sp_poc.jpa_sp.service; import jpa_sp_poc.jpa_sp.ApiResponse; -import jpa_sp_poc.jpa_sp.Repository.MemberRepository; +import jpa_sp_poc.jpa_sp.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; 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