목록전체 글 (261)
당니의 개발자 스토리
상품 리포지토리 개발여러분 이번 시간에는 상품 리포지토리를 한번 개발해 보겠습니다.이렇게 ItemRepository를 만드시구요.당연히 @Repository 어노테이션을 넣고, @RequiredArgsConstructor를 넣기로 했죠.그 다음에 private final 해가지고 엔티티 매니저, Spring Data JPA가 주입해준다고 말씀드렸죠. 아마 미래에는 꼭 Spring Data JPA가 아니라 Spring이 기본적으로 이거를 해줄 거에요. @PersistenceContext 대신에 @Autowired로 할 수 있도록 해줄 거에요.자 이제 쭉 개발해 볼게요.먼저 상품 저장해야 되겠죠.그래서 save를 해야 되고 여기서 만약에 item.getId()가 null이면 em.persist 해서 item..
상품 엔티티 개발(비즈니스 로직 추가)이번 시간에는 상품 도메인을 개발해 보겠습니다.상품 도메인의 구현 기능은 크게 3가지인데요.먼저 상품을 이전에 봤던 화면을 생각해 보시면, 상품을 등록하고 상품 목록을 쭉 조회한 다음에, 마지막으로 상품을 수정할 수가 있습니다.자 그리고 개발 순서는먼저 상품 엔티티 도메인 자체에 비즈니스 로직을 추가할 겁니다. 그리고 상품 리포지토리를 개발하고 상품 서비스를 개발할 겁니다. 그런데 상품 기능을 테스트하는 것은 이번에는 생략할 거에요. 왜냐면 이게 약간 단순해서 이전과 비슷하기 때문입니다.그러면 상품 엔티티 개발을 한번 해보겠습니다. 상품이니까 Item 클래스로 가셔야겠죠.이제 두 가지 어떤 비즈니스를 넣을 거에요. 뭘 넣을 거냐면 재고를 늘리고 줄이는 걸 할 거예요...
회원 기능 테스트이번 시간에는 회원 기능이 잘 동작하는지 테스트 코드로 한번 검증해보겠습니다.이제 테스트는 회원 가입을 성공해야 되고요. 그 다음에 회원을 가입할 때 같은 이름이 있으면 예외가 발생해야 되겠죠. 두 가지가 되게 중요한 테스트입니다.자 그럼 한번 만들어 보겠습니다.먼저 이 MemberService 클래스에서 테스트를 작성할 건데요. 여기서 단축키 Command + Shift + T를 누르시면 됩니다.자 MemberServiceTest 라고 하고 저는 JUnit 4를 그대로 쓸 겁니다. 그렇게 해서 ok를 해놓고요.먼저 두 가지를 테스트 하겠죠.자 중요한 회원 가입 테스트를 만들고요. 그 다음에 중복 회원 예외가 정상적으로 동작하는지 확인하는 테스트를 작성할 겁니다.자 그러면 먼저 테스트를 ..
회원 서비스 개발이번 시간에는 회원 리포지토리에 이어서 회원 서비스를 한번 개발해 보겠습니다.회원 서비스는 여기다가 service 패키지를 만들 거구요. 그 다음에 MemberService라고 만들 겁니다.스프링이 또 @Service 라는 어노테이션을 제공하죠.이걸 쓰면 이 @Service 어노테이션에 또 @Component 라고 되어있기 때문에 컴포넌트 스캔의 대상이 되어서 자동으로 스프링 빈으로 등록이 됩니다.우선 MemberService는 MemberRepository를 쓸 거기 때문에 방금 저희가 만든 MemberRepository를 이렇게 @Autowired를 쓰면 Injection이 되죠. Injection 하는 방법에는 여러가지가 있는데 우선 지금은 얘를 쓰고 뒤에 더 좋은 ..
회원 리포지토리 개발이번 시간에는 회원 도메인을 개발해 보겠습니다.먼저 기본적으로 예전에 봤던 것처럼 회원을 등록하고 회원 목록을 조회하는 기능을 만들어 볼 거에요. 되게 단순하죠. 그런데 순서는 먼저 회원 엔티티 코드를 한번 다시 보고요. 그 다음에 회원 리포지토리 서비스, 이 두 가지를 개발한 다음에 그리고 회원 기능이 잘 동작하는지 테스트를 만들어서 돌려 보겠습니다.이번 시간에는 먼저 회원 리포지토리를 개발해볼게요...
애플리케이션 아키텍처이번 시간에는 애플리케이션 아키텍처를 어떤 식으로 구성할지 간단하게 소개를 해드리겠습니다.먼저 우리가 일반적으로 하는 그 계층형 아키텍처라는 걸 사용할 건데요. 컨트롤러, 서비스, 리포지토리는 딱 이 구조로 갈 겁니다. 리포지토리에서에 데이터베이스 접근하고, 각각은 이제 저희가 엔티티나 Value Object들을 설계해 놓은 그런 도메인을 다 참조하도록 설계를 할 겁니다.그래서 컨트롤러나..
구현 요구사항 이번 시간에는 애플리케이션을 어떻게 구현할지에 대해서 구현 요구사항이랑, 그리고 애플리케이션 아키텍처에 대해서 설명을 해드리겠습니다. 먼저 도메인을 설계하고 다 했는데 그런 거는 뭔가 데이터적인 설계였고 이번에는 그래서 도대체 뭘 어디까지 구현할 건지에 대해서 전체적으로 한번 쭉 설명을 해드리겠습니다. 먼저 여기 보시는 것처럼 회원 가입, 회원 목록을 보고, 그래서 회원은 단순하게 회원 등록하고 조회하고, 상품을 등록하고 수정하고 조회하고, 그 다음에 주문에서는 상품을 주문해 보고 주문 예약을 조회하고 주문을 취소하고 검색하고 하는 이런 기능들이 들어가게 됩니다. 자 먼저 보여드리면, 회원 가입하면 이렇게 쭉 하면, 비즈니스 메서드에서 회원 가입하는 게 나와야 되겠죠. 그 다음에 목록을 보..
엔티티 설계시 주의점 이번 시간에는 Entity를 설계할 때의 주의점에 대해서 알아보겠습니다. 먼저 Entity에는 가급적이면 Setter를 사용하지 말자! 앞에서 정말 많이 강조를 해드렸죠. Setter가 모두 열려 있으면 변경 포인트가 너무 많아요. 그래서 특정 Entity 하나가 도대체 어디서 수정된 건지 알 수가 없거든요. 그래서 유지 보수가 어려워집니다. '어 그럼 Setter를 안 만들면 도대체 어떻게 변경할 수 있나요?'에 대해서는 뒤에 애플리케이션 개발하는 곳에서 제가 실제 비즈니스 메서드를 하나씩 등록하면서 그런 코드들을 가지고 여러분들께 보여드릴게요. 그런 거를 활용하면 충분히 Setter 없이 애플리케이션을 개발할 수가 있습니다. 아 근데 엔티티에는 가급적 Setter를 사용하지 말자..