Spring Boot를 이용한 RESTful Web Services 개발 #11 User 도메인 클래스 생성

jakeseo_me·2021년 9월 14일
0

Spring-boot-restful

목록 보기
11/17

User 도메인 클래스 생성하기

@Data
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private LocalDateTime joinDate;
}

각 회사는 업무의 범위가 있고, 그 범위를 보통 도메인이라고 한다. 보통 특정한 분야에서 사용되는 업무 지식을 말한다.

UserDaoService 클래스 생성하기

public class UserDaoService {
    private static final List<User> users = new ArrayList<>();
    private static int usersCount = 3;

    static {
        users.add(new User(1, "jake", LocalDateTime.now()));
        users.add(new User(2, "jack", LocalDateTime.now()));
        users.add(new User(3, "paul", LocalDateTime.now()));
    }

    public User save(User user) {
        if(user.getId() == null) {
            user.setId(++usersCount);
        }

        users.add(user);
        return user;
    }

    public List<User> findAll() {
        return users;
    }

    public User findOne(int id) {
        return users.stream()
                .filter((user) -> user.getId() == id)
                .findFirst()
                .orElse(null);
    }
}

리포지토리와 서비스를 합친 UserDaoService를 만들어주었다.

참고로 Optional에서 만일 값이 없을 때, 어떤 메소드의 결과로 처리하고 싶으면 리턴 값이 SupplierorElseGet()을 사용해야 하고, 메소드의 결과가 아닌 그냥 값으로 처리하고 싶다면, orElse()를 사용하는 것이 좋다.

orElse(method())와 같이 코드를 작성하게 되면, 매번 null이 아니어도 method()는 실행된다. 하지만, orElseGet(() -> method())Supplier를 반환하기 때문에, null인 경우에만 실행된다.

참고 링크

profile
대전에서 풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React, Vue 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글