JPA_SP 수정 및 Test용 Http 파일 추가 #3

This commit is contained in:
HyeonJongKim 2024-05-08 14:18:29 +09:00
parent 213f10d3be
commit 3fe9a49554
22 changed files with 127 additions and 99 deletions

View File

@ -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에 저장해야 정상작동

View File

@ -8,8 +8,7 @@
<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" />
</processorPath>
<module name="admin.test" />
<module name="admin.main" />
<module name="jpa_sp_poc.main" />
</profile>
</annotationProcessing>
</component>

12
poc/.idea/dataSources.xml Normal file
View File

@ -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>

View File

@ -12,6 +12,15 @@
</set>
</option>
</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>
</component>
</project>

View File

@ -3,6 +3,7 @@
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$/admin" />
<file type="web" url="file://$PROJECT_DIR$/jpa_sp_pocs" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />

View File

@ -3,6 +3,7 @@
<component name="ProjectModuleManager">
<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$/.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" />
</modules>
</component>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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') {

View File

@ -1 +1 @@
rootProject.name = 'JPA_SP'
rootProject.name = 'jpa_sp_poc'

View File

@ -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;

View File

@ -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) {

View File

@ -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 {

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -1,10 +0,0 @@
package jpa_sp_poc.jpa_sp.Request;
import lombok.Getter;
@Getter
public class UpdateMemberRequest {
private Long id;
private String name;
}

View File

@ -1 +0,0 @@
spring.application.name=jpa_sp_poc