Spring boot + JdbcTemplate 사용해보기 (2) 도메인 객체 및 Repository 정의

Peter·2024년 7월 13일
0
post-thumbnail

도메인 객체 정의

Church 서비스를 만든다고 가정하고, Member (도메인 객체)를 정의했다.

  • Church Member 에서의 직분(position)은 "집사", "권사", "장로" 등이다.
  • Church 마다 local 하게 사용하는 직분이 추가될 수도 있어서 position의 타입은 enum 대신 String 을 사용했다.
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
public class Member {
    private Long id;
    private String name;
    private Gender gender;
    private String position; // 직분
    private LocalDate birthDate;
    private String address;
    private String phoneNumber;
}

위 Member 클래스에서 사용한 Gender(성별)는 enum 으로 정의했다.

public enum Gender {
    MALE,
    FEMALE
}

MemberRepository 정의

public interface MemberRepository {
    Member save(Member member);
    
    Optional<Member> findById(Long id);

    List<Member> findAll(MemberSearchParam cond);

    void update(Long memberId, MemberUpdateParam updateParam);

    void delete(Long memberId);
}

Member 객체에 대한 CRUD 요청을 처리하는 MemberRepository 인터페이스를 정의했다.

findAll 메서드의 경우, 간단하게 name 으로 like 검색을 구현해 볼 계획이다.

@Getter
public class MemberSearchParam {
    private String name;

    public MemberSearchParam(String name) {
        this.name = name;
    }
}

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class MemberUpdateParam {
    private String name;
    private Gender gender;
    private String position; // 직분
    private LocalDate birthDate;
    private String address;
    private String phoneNumber;
}

테이블 생성

위 Member 객체를 영속화 하기 위한 members 테이블을 생성하였다.

DROP TABLE IF EXISTS members CASCADE;
CREATE TABLE members (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    gender ENUM('MALE', 'FEMALE') NOT NULL,
    position VARCHAR(255),
    birth_date DATE,
    address VARCHAR(255),
    phone_number VARCHAR(20)
);

0개의 댓글