JPA_SP 수정 및 Test용 Http 파일 추가 #3
This commit is contained in:
parent
213f10d3be
commit
3fe9a49554
|
|
@ -26,9 +26,3 @@ docker compose up -d # detach mode
|
||||||
docker compose -v down # 종료 (-v 옵션 줄 경우 volume 삭제)
|
docker compose -v down # 종료 (-v 옵션 줄 경우 volume 삭제)
|
||||||
```
|
```
|
||||||
2. 프로젝트 실행
|
2. 프로젝트 실행
|
||||||
|
|
||||||
|
|
||||||
## [JPA_SP CRUD]
|
|
||||||
### JPA를 이용하여 SP 호출을 구현한 PoC
|
|
||||||
#### 주의 사항
|
|
||||||
- resources/procedure.sql 을 별도로 실행하여 SP DB에 저장해야 정상작동
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@
|
||||||
<processorPath useClasspath="false">
|
<processorPath useClasspath="false">
|
||||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.32/17d46b3e205515e1e8efd3ee4d57ce8018914163/lombok-1.18.32.jar" />
|
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.32/17d46b3e205515e1e8efd3ee4d57ce8018914163/lombok-1.18.32.jar" />
|
||||||
</processorPath>
|
</processorPath>
|
||||||
<module name="admin.test" />
|
<module name="jpa_sp_poc.main" />
|
||||||
<module name="admin.main" />
|
|
||||||
</profile>
|
</profile>
|
||||||
</annotationProcessing>
|
</annotationProcessing>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="@localhost" uuid="6695722a-641b-4a9a-9b06-50f52a22ce66">
|
||||||
|
<driver-ref>mariadb</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mariadb://localhost:3307</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -12,6 +12,15 @@
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
|
<GradleProjectSettings>
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$/jpa_sp_poc" />
|
||||||
|
<option name="gradleJvm" value="corretto-19" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$/jpa_sp_poc" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="FrameworkDetectionExcludesConfiguration">
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
<file type="web" url="file://$PROJECT_DIR$/admin" />
|
<file type="web" url="file://$PROJECT_DIR$/admin" />
|
||||||
|
<file type="web" url="file://$PROJECT_DIR$/jpa_sp_pocs" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/jpa_sp_poc/jpa_sp_poc.iml" filepath="$PROJECT_DIR$/jpa_sp_poc/jpa_sp_poc.iml" />
|
<module fileurl="file://$PROJECT_DIR$/jpa_sp_poc/jpa_sp_poc.iml" filepath="$PROJECT_DIR$/jpa_sp_poc/jpa_sp_poc.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/jpa_sp_poc.main.iml" filepath="$PROJECT_DIR$/.idea/modules/jpa_sp_poc.main.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/poc.iml" filepath="$PROJECT_DIR$/.idea/poc.iml" />
|
<module fileurl="file://$PROJECT_DIR$/.idea/poc.iml" filepath="$PROJECT_DIR$/.idea/poc.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module version="4">
|
||||||
|
<component name="AdditionalModuleElements">
|
||||||
|
<content url="file://$MODULE_DIR$/../../jpa_sp_pocs/build/generated/sources/annotationProcessor/java/main">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/../../jpa_sp_pocs/build/generated/sources/annotationProcessor/java/main" isTestSource="false" generated="true" />
|
||||||
|
</content>
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="SqlDialectMappings">
|
||||||
|
<file url="file://$PROJECT_DIR$/jpa_sp_pocs/src/main/resources/procedure.sql" dialect="GenericSQL" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -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
|
||||||
|
|
@ -4,7 +4,7 @@ plugins {
|
||||||
id 'io.spring.dependency-management' version '1.1.4'
|
id 'io.spring.dependency-management' version '1.1.4'
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'JPA_SP'
|
group = 'com.bpgroup.poc'
|
||||||
version = '0.0.1-SNAPSHOT'
|
version = '0.0.1-SNAPSHOT'
|
||||||
|
|
||||||
java {
|
java {
|
||||||
|
|
@ -22,15 +22,23 @@ repositories {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
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'
|
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
|
// db
|
||||||
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
|
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
|
||||||
annotationProcessor 'org.projectlombok:lombok'
|
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.named('test') {
|
tasks.named('test') {
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
rootProject.name = 'JPA_SP'
|
rootProject.name = 'jpa_sp_poc'
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package jpa_sp_poc.jpa_sp;
|
package com.bpgorup.poc.jpa_sp;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
@ -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.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@EnableJpaAuditing
|
|
||||||
public class JpaSpApplication {
|
public class JpaSpApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
@ -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 com.bpgorup.poc.jpa_sp.ApiResponse;
|
||||||
import jpa_sp_poc.jpa_sp.Request.MemberRequest;
|
import com.bpgorup.poc.jpa_sp.request.MemberRequest;
|
||||||
import jpa_sp_poc.jpa_sp.Service.MemberService;
|
import com.bpgorup.poc.jpa_sp.request.UpdateMemberRequest;
|
||||||
import jpa_sp_poc.jpa_sp.Request.UpdateMemberRequest;
|
import com.bpgorup.poc.jpa_sp.service.MemberService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
@ -13,15 +13,6 @@ public class MainController {
|
||||||
|
|
||||||
private final MemberService memberService;
|
private final MemberService memberService;
|
||||||
|
|
||||||
/*
|
|
||||||
* CREATE PROCEDURE GetAllMember(
|
|
||||||
* )
|
|
||||||
* BEGIN
|
|
||||||
* SELECT *
|
|
||||||
* FROM Member;
|
|
||||||
* END
|
|
||||||
*/
|
|
||||||
|
|
||||||
@GetMapping("/all-members")
|
@GetMapping("/all-members")
|
||||||
public ApiResponse allMembers() {
|
public ApiResponse allMembers() {
|
||||||
try {
|
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")
|
@PostMapping("/create-member")
|
||||||
public ApiResponse createMember(@RequestBody MemberRequest request) {
|
public ApiResponse createMember(@RequestBody MemberRequest request) {
|
||||||
try {
|
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")
|
@PostMapping("/update-member")
|
||||||
public ApiResponse updateMember(@RequestBody UpdateMemberRequest request) {
|
public ApiResponse updateMember(@RequestBody UpdateMemberRequest request) {
|
||||||
try {
|
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")
|
@PostMapping("/delete-member")
|
||||||
public ApiResponse deleteMember(@RequestParam Long id) {
|
public ApiResponse deleteMember(@RequestParam Long id) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -1,24 +1,24 @@
|
||||||
package jpa_sp_poc.jpa_sp.Entity;
|
package com.bpgorup.poc.jpa_sp.entity;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "member")
|
@Table(name = "member")
|
||||||
public class MemberEntity {
|
public class MemberEntity {
|
||||||
|
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name="name", nullable = false)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@Column(name="email", nullable = false)
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
@Column(name="password", nullable = false)
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -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.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.query.Procedure;
|
import org.springframework.data.jpa.repository.query.Procedure;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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 com.bpgorup.poc.jpa_sp.ApiResponse;
|
||||||
import jpa_sp_poc.jpa_sp.Repository.MemberRepository;
|
import com.bpgorup.poc.jpa_sp.repository.MemberRepository;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
package jpa_sp_poc.jpa_sp.Request;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
public class UpdateMemberRequest {
|
|
||||||
|
|
||||||
private Long id;
|
|
||||||
private String name;
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
spring.application.name=jpa_sp_poc
|
|
||||||
Loading…
Reference in New Issue