Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions spring-boot/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ dependencies {

implementation 'com.mysql:mysql-connector-j:9.2.0'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.flywaydb:flyway-core:11.3.1'
implementation 'org.flywaydb:flyway-mysql:11.3.1'
implementation 'org.flywaydb:flyway-mysql:11.3.2'


testImplementation 'org.springframework.boot:spring-boot-starter-test'
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.mpc.springboot.member.application.service;

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

private final MemberRepository memberRepository;

public MemberResponse getMemberBy(MemberCode memberCode) {
return MemberResponse.of(memberRepository.findMemberBy(memberCode));
public Member getMemberBy(MemberCode code) {
return memberRepository.findMemberBy(code)
.orElseThrow(MemberNotFoundException::new);
}

public Member createMember(Member member) {
return memberRepository.save(member);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.mpc.springboot.member.domain.entity;

import jakarta.persistence.*;

import com.mpc.springboot.member.domain.vo.MemberCode;
import com.mpc.springboot.member.domain.mapping.MemberCodeConverter;
import com.mpc.springboot.member.domain.vo.MemberName;
import lombok.*;

@Getter
@NoArgsConstructor
//@Table(name = "member")
@Entity
public class Member {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`key`")
private Integer key;

@Convert(converter = MemberCodeConverter.class)
@Column(name = "`code`")
private MemberCode code;

@Embedded
private MemberName name;

public Member(MemberCode code, MemberName name) {
this.code = code;
this.name = name;
}

public static Member create(MemberCode code, MemberName name) {
return new Member(code, name);
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.mpc.springboot.member.domain.exception;

public class MemberNotFoundException extends RuntimeException {

private static final String MESSAGE = "Member not found";

public MemberNotFoundException() {
super(MESSAGE);
}

public MemberNotFoundException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mpc.springboot.member.domain.mapping;

import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Converter;

import java.util.Objects;

import com.mpc.springboot.member.domain.vo.MemberCode;

@Converter(autoApply = true)
public class MemberCodeConverter implements AttributeConverter<MemberCode, String> {

@Override
public String convertToDatabaseColumn(MemberCode attribute) {
if (attribute == null) {
return "";
}
return attribute.getValue();
}

@Override
public MemberCode convertToEntityAttribute(String dbData) {
String value = Objects.requireNonNullElse(dbData, "");
return new MemberCode(value);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.mpc.springboot.member.domain.repository;

import org.springframework.stereotype.Repository;
import com.mpc.springboot.member.domain.dto.MemberView;
import java.util.Optional;

import com.mpc.springboot.member.domain.entity.Member;
import com.mpc.springboot.member.domain.vo.MemberCode;

public interface MemberRepository {

MemberView findMemberBy(MemberCode memberCode);
Optional<Member> findMemberBy(MemberCode code);

Member save(Member member);
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package com.mpc.springboot.member.domain.vo;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;

import lombok.*;

@Getter
@RequiredArgsConstructor
@NoArgsConstructor
@Embeddable
public class MemberName {
private final String firstName;
private final String lastName;

private String firstName;
private String lastName;

public String getFullName() {
return firstName + " " + lastName;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mpc.springboot.member.infrastructure.persistence.jpa.repository;

import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import com.mpc.springboot.member.domain.entity.Member;
import com.mpc.springboot.member.domain.vo.MemberCode;

public interface MemberJpaRepository extends JpaRepository<Member, Long> {

Optional<Member> findByCode(MemberCode code);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mpc.springboot.member.infrastructure.persistence.jpa.repository;

import java.util.Optional;

import org.springframework.stereotype.Repository;
import com.mpc.springboot.member.domain.entity.Member;
import com.mpc.springboot.member.domain.repository.MemberRepository;
import com.mpc.springboot.member.domain.vo.MemberCode;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Repository
public class MemberRepositoryImpl implements MemberRepository {

private final MemberJpaRepository memberJpaRepository;

@Override
public Optional<Member> findMemberBy(MemberCode code) {
return memberJpaRepository.findByCode(code);
}

@Override
public Member save(Member member) {
return memberJpaRepository.save(member);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import com.mpc.springboot.member.application.dto.MemberResponse;
import com.mpc.springboot.member.application.service.MemberService;
import com.mpc.springboot.member.domain.entity.Member;
import com.mpc.springboot.member.domain.vo.MemberCode;
import lombok.*;

Expand All @@ -14,8 +14,13 @@ public class MemberRestController {

private final MemberService memberService;

@GetMapping("/{memberCode}")
public ResponseEntity<MemberResponse> getMemberBy(@PathVariable MemberCode memberCode) {
return ResponseEntity.ok(memberService.getMemberBy(memberCode));
@GetMapping("/{code}")
public ResponseEntity<Member> getMemberBy(@PathVariable MemberCode code) {
return ResponseEntity.ok(memberService.getMemberBy(code));
}

@PostMapping
public ResponseEntity<Member> createMember(@RequestBody Member member) {
return ResponseEntity.ok(memberService.createMember(member));
}
}
3 changes: 1 addition & 2 deletions spring-boot/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver

jpa:
database-platform: org.hibernate.dialect.MySQL8Dialect
database: mysql
hibernate:
ddl-auto: update
ddl-auto: validate
show-sql: true
properties:
hibernate.format_sql: true
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
alter table member rename column member_key to `key`;
alter table member rename column member_code to `code`;