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