Spring/spring_old

04. interface(repository, service)-02

slow333 2023. 1. 19. 16:04

repository(store) interface 패키지 구성

package spring.study.repository;

import spring.study.aggregate.club.Club;
import java.util.List;
import java.util.Optional;

public interface ClubStore {

  String create(Club club);

  List<Club> findByName(String clubName);
  Optional<Club> findById(String clubId);
  List<Club> findByNameContaining(String clubName);
  List<Club> findAll();

  void update(Club club);
  void delete(String clubId);

  boolean exists(String clubId);
}
package spring.study.repository;

import spring.study.aggregate.club.Membership;

import java.util.List;
import java.util.Optional;

public interface MembershipStore {

  String create(Membership membership);

  Optional<Membership> findById(String membershipId);
  Optional<Membership> findByClubId(String clubId);
  Optional<Membership> findByMemberId(String MemberId);
  List<Membership> findAll();

  void update(Membership membership);
  void delete(String membershipId);

  boolean exists(String membershipId);
}
package spring.study.repository;

import spring.study.aggregate.club.Member;

import java.util.List;
import java.util.Optional;

public interface MemberStore {

  String create(Member member);

  Optional<Member> findById(String memberId);
  Optional<Member> findByEmail(String memberEmail);
  List<Member> findByName(String memberName);
  List<Member> findByNameContaining(String memberName);
  List<Member> findAll();

  void update(Member member);
  void delete(String memberEmail);

  boolean exists(String memberId);
}

service interface 패키지 구성

   기본 적으로 내용(구성)은 repository interface와 유사함 ==> 일부 내용/구현 이름만 다름

  * 객체를 주입받기 위해 sdo(cdo)를 구현함

package spring.study.service;

import spring.study.aggregate.club.Club;
import spring.study.service.sdo.ClubCdo;
import spring.study.shared.NameAndValueList;

import java.util.List;
import java.util.Optional;

public interface ClubService {

  String registerClub(ClubCdo club);

  List<Club> findClubsByName(String clubName);
  Optional<Club> findClubById(String id);
  List<Club> findClubsByNameContaining(String name);
  List<Club> findAll();

  void modifyClub(String clubId, NameAndValueList nameAndValueList);
  void removeClub(String clubId);

  boolean exists(String clubId);
}
package spring.study.service;

import spring.study.aggregate.club.Member;
import spring.study.service.sdo.MemberCdo;
import spring.study.shared.NameAndValueList;

import java.util.List;
import java.util.Optional;

public interface MemberService {

  String registerMember(MemberCdo memberCdo);

  Optional<Member> findMemberById(String memberId);
  Optional<Member> findMemberByEmail(String memberEmail);
  List<Member> findMemberByName(String memberName);
  List<Member> findByMemberNameContaining(String memberName);
  List<Member> findAll();

  void modifyMember(String memberId, NameAndValueList nameAndValueList);
  void removeMember(String memberId);

  boolean exists(String memberId);
}
package spring.study.service;

import spring.study.aggregate.club.Membership;
import spring.study.service.sdo.MembershipCdo;
import spring.study.shared.NameAndValueList;

import java.util.List;
import java.util.Optional;

public interface MembershipService {

  String registerMembership(MembershipCdo membershipCdo);

  Optional<Membership> findMembershipById(String membershipId);
  Optional<Membership> findMembershipByMemberId(String memberId);
  Optional<Membership> findMembershipByClubId(String ClubId);
  List<Membership> findByRole(String membershipRole);
  List<Membership> findAll();

  void modifyMembership(String membershipId, NameAndValueList nameAndValueList);
  void removeMembership(String membershipId);

  boolean exists(String membershipId);
}
package spring.study.service.sdo;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class ClubCdo {
  private String name;
  private String intro;
}
package spring.study.service.sdo;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MemberCdo {
  String email; //중복 안됨, key
  String name;
  String phoneNumber;
  String birthDay;
  String nickName;
}
package spring.study.service.sdo;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import spring.study.aggregate.club.vo.RoleInClub;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MembershipCdo {
  RoleInClub role;
}