Skip to content

Commit a6c2c9b

Browse files
authored
Merge pull request #4 from Modern-Programming-Club/feature/add-github-action
Refactor member persistence layer to use JPA entities
2 parents a720963 + 7e47d50 commit a6c2c9b

File tree

15 files changed

+153
-69
lines changed

15 files changed

+153
-69
lines changed

spring-boot/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ dependencies {
3232

3333
implementation 'com.mysql:mysql-connector-j:9.2.0'
3434
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
35-
implementation 'org.flywaydb:flyway-core:11.3.1'
36-
implementation 'org.flywaydb:flyway-mysql:11.3.1'
35+
implementation 'org.flywaydb:flyway-mysql:11.3.2'
3736

3837

3938
testImplementation 'org.springframework.boot:spring-boot-starter-test'

spring-boot/src/main/java/com/mpc/springboot/member/application/dto/MemberResponse.java

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.mpc.springboot.member.application.service;
22

33
import org.springframework.stereotype.Service;
4-
import com.mpc.springboot.member.application.dto.MemberResponse;
4+
import com.mpc.springboot.member.domain.entity.Member;
5+
import com.mpc.springboot.member.domain.exception.MemberNotFoundException;
56
import com.mpc.springboot.member.domain.repository.MemberRepository;
67
import com.mpc.springboot.member.domain.vo.MemberCode;
78
import lombok.RequiredArgsConstructor;
@@ -12,7 +13,12 @@ public class MemberService {
1213

1314
private final MemberRepository memberRepository;
1415

15-
public MemberResponse getMemberBy(MemberCode memberCode) {
16-
return MemberResponse.of(memberRepository.findMemberBy(memberCode));
16+
public Member getMemberBy(MemberCode code) {
17+
return memberRepository.findMemberBy(code)
18+
.orElseThrow(MemberNotFoundException::new);
19+
}
20+
21+
public Member createMember(Member member) {
22+
return memberRepository.save(member);
1723
}
1824
}

spring-boot/src/main/java/com/mpc/springboot/member/domain/dto/MemberView.java

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.mpc.springboot.member.domain.entity;
2+
3+
import jakarta.persistence.*;
4+
5+
import com.mpc.springboot.member.domain.vo.MemberCode;
6+
import com.mpc.springboot.member.domain.mapping.MemberCodeConverter;
7+
import com.mpc.springboot.member.domain.vo.MemberName;
8+
import lombok.*;
9+
10+
@Getter
11+
@NoArgsConstructor
12+
//@Table(name = "member")
13+
@Entity
14+
public class Member {
15+
16+
@Id
17+
@GeneratedValue(strategy = GenerationType.IDENTITY)
18+
@Column(name = "`key`")
19+
private Integer key;
20+
21+
@Convert(converter = MemberCodeConverter.class)
22+
@Column(name = "`code`")
23+
private MemberCode code;
24+
25+
@Embedded
26+
private MemberName name;
27+
28+
public Member(MemberCode code, MemberName name) {
29+
this.code = code;
30+
this.name = name;
31+
}
32+
33+
public static Member create(MemberCode code, MemberName name) {
34+
return new Member(code, name);
35+
}
36+
}
37+
38+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.mpc.springboot.member.domain.exception;
2+
3+
public class MemberNotFoundException extends RuntimeException {
4+
5+
private static final String MESSAGE = "Member not found";
6+
7+
public MemberNotFoundException() {
8+
super(MESSAGE);
9+
}
10+
11+
public MemberNotFoundException(String message) {
12+
super(message);
13+
}
14+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.mpc.springboot.member.domain.mapping;
2+
3+
import jakarta.persistence.AttributeConverter;
4+
import jakarta.persistence.Converter;
5+
6+
import java.util.Objects;
7+
8+
import com.mpc.springboot.member.domain.vo.MemberCode;
9+
10+
@Converter(autoApply = true)
11+
public class MemberCodeConverter implements AttributeConverter<MemberCode, String> {
12+
13+
@Override
14+
public String convertToDatabaseColumn(MemberCode attribute) {
15+
if (attribute == null) {
16+
return "";
17+
}
18+
return attribute.getValue();
19+
}
20+
21+
@Override
22+
public MemberCode convertToEntityAttribute(String dbData) {
23+
String value = Objects.requireNonNullElse(dbData, "");
24+
return new MemberCode(value);
25+
}
26+
}
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.mpc.springboot.member.domain.repository;
22

3-
import org.springframework.stereotype.Repository;
4-
import com.mpc.springboot.member.domain.dto.MemberView;
3+
import java.util.Optional;
4+
5+
import com.mpc.springboot.member.domain.entity.Member;
56
import com.mpc.springboot.member.domain.vo.MemberCode;
67

78
public interface MemberRepository {
89

9-
MemberView findMemberBy(MemberCode memberCode);
10+
Optional<Member> findMemberBy(MemberCode code);
11+
12+
Member save(Member member);
1013
}

spring-boot/src/main/java/com/mpc/springboot/member/domain/vo/MemberName.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.mpc.springboot.member.domain.vo;
22

3-
import lombok.Getter;
4-
import lombok.RequiredArgsConstructor;
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.Embeddable;
5+
6+
import lombok.*;
57

68
@Getter
7-
@RequiredArgsConstructor
9+
@NoArgsConstructor
10+
@Embeddable
811
public class MemberName {
9-
private final String firstName;
10-
private final String lastName;
12+
13+
private String firstName;
14+
private String lastName;
1115

1216
public String getFullName() {
1317
return firstName + " " + lastName;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.mpc.springboot.member.infrastructure.persistence.jpa.repository;
2+
3+
import java.util.Optional;
4+
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import com.mpc.springboot.member.domain.entity.Member;
7+
import com.mpc.springboot.member.domain.vo.MemberCode;
8+
9+
public interface MemberJpaRepository extends JpaRepository<Member, Long> {
10+
11+
Optional<Member> findByCode(MemberCode code);
12+
}

0 commit comments

Comments
 (0)