CRUD.
어떻게 발음하시나요?
저는 처음에 이걸 크루드라 읽었는데 크러드더라고요.
지금껏 '크러드' 이야기를 꺼냈을 때 저는
1) 그게 뭐냐?
2) '씨알유디'아니냐?
3) 난 그거 CURD라 부르는데...
등의 반응을 경험했습니다.
그래서 이 부분을 먼저 명확히 하고 싶었습니다.
CRUD = "크러드"로 통일합시다...
근거: https://www.youtube.com/shorts/7ftQVAnRrq8
Flutter가 플루터가 아니고 후랏따도 아니고 플러터인 것처럼요.
오늘은 JPA를 활용해 CRUD 기능을 만드는 시간입니다.
'스프링 부트 3 백엔드 개발자 되기'책에서는 해당 내용을 테스트 코드까지 포함해서 알려 줍니다.
자세한 내용은 책을 참고하시면 됩니다.
제가 블로그에 기록할 내용은
JPA를 활용해 CRUD하는 모든 과정을 '한눈'에 볼 수 있게
간단 정리하는 겁니다.
시작하기 전에> 왜 JPA를 써야 하나요?
JPA를 쓰지 않으면 쿼리를 다 내 손으로 써야 합니다.
JPA를 쓰면 JPA가 가지고 있는 메서드를 통해 Creat, Read, Update, Delete 등의 주요 기능을 갖다 쓸 수 있습니다.
- 엔티티를 만들자!
엔티티를 만들어야 ORM인 JPA를 통해 테이블과 매핑돼 작동할 자바 객체를 만들 수 있습니다.
- 서비스 메서드 코드를 작성하자!
저는 컨트롤러부터 만드는 걸 좋아합니다.
하지만 책에서 서비스 메서드 코드 작성하는 것부터 알려 주고 있으니 이제는 이렇게 하려고요.
- 컨트롤러 메서드 코드를 작성하자!
- 포스트맨에서 실행 테스트하자!
- 해당 기능 테스트를 위한 코드를 작성하자!
- Read나 Delete는 엔티티를 조작하지 않는다. 그래서 Entity를 건드릴 일이 없다.
Create도 DTO를 Entity로 만들지, 만들어진 Entity를 건드리진 않는다.
Update는 Entity를 건드린다!
그래서 Entity에 요청받은 내용으로 값을 수정하는 메서드를 작성해야 한다.
이 정도의 차이를 제외하고는 CRUD 기능 작성 방법은 거의 비슷하다.
끝입니다.
이 이상 내용을 자세히 적지 않은 이유는
1) 한글로 코드를 설명하는 게 큰 의미가 없고
2) 이런 식으로 기능을 돌아가게 하는 게 위 형태 한 가지만 있는 게 아니기 때문입니다.
책에서는 Entity랑 DTO를 모두 두었지만 Entity 없이 DTO만으로 끝내거나 서비스 인터페이스를 만들고 그걸 implement한 곳에서 서비스 메서드를 완성하거나 할 수도 있습니다.
이런 부분은... 개인이 개발 경험을 해 나가면서 채워질 부분이라 생각합니다.
위 CRUD 방식에 대한 코드를 보고 싶은 분은
https://github.com/JaeeunSkywalker/jaeeunTheBlackrabbit/tree/26caebc14c4e292d1f148823ae1e77be488f6cc2
여기를 참고하시면 되겠습니다.
이외에 본 장에서 많이 중요하다 생각하는 개념 중에 스트림이랑 빌더 패턴이 있는데
이거는 다음 기회에 스트림 별도, 빌더 패턴 별도 이렇게 포스팅하겠습니다.
(정말 중요하기 때문에...!)
이 글은 골든래빗 《스프링 부트 3 백엔드 개발자 되기 - 자바 편》의 6장 써머리입니다.