현재 백엔드 세미나에서는 쇼핑몰 만들기 프로젝트로 공부를 한다.
2주차 과제는 Service와 Entity, 각 상황에 맞는 DTO를 만들어서 Controller와 연결하기였다.
이 과제를 하면서 알게된것을 정리해보자면
1. Entity에서 원시타입과 래퍼클래스를 사용하는 기준
2. Builder 패턴과 Lombok의 @Builder
3. @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor에 관해서 더 자세히
4. @AllArgsConstructor와 @RequiredArgsConstructor의 문제점
5. 그럼에도 불구하고 내가 RequiredArgsConstructor 어노테이션을 사용하는 이유
6. @NoArgsConstructor에 (accsee = AccseeLevel.PROTECTED)를 붙이는 이유
7. JPA에서 엔티티는 반드시 기본생성자를 가져야한다.
정도가 있다.
처음부터 차근차근 보면
▶ 1. Entity에서 원시타입과 래퍼클래스를 사용하는 기준

[Spring Boot] Entity에서 원시타입과 래퍼클래스를 사용하는 기준
개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다. 왜 long를 안쓰고 Long를 쓸까? 이 둘의 차이점은 무엇일까? 궁금해졌다. 바로
learning-study.tistory.com
위 글에 작성해놓았다!
▶ 2. Builder 패턴과 Lombok의 @Builder
[Spring Boot] Builder 패턴과 Lombok의 @Builder
▶빌더패턴이 뭐지? 빌더패턴은 생성자로만 객체를 생성했을 때 문제를 해결하기 위한 패턴이다. ▶생성자로 객체 생성 생성자로만 객체 생성을 하면 코드가 복잡해지고 가독성이 떨어진다. pub
learning-study.tistory.com
이 글에 정리를 해두었다!
과제를 하기전에 Builder패턴이 모지?? 했었는데
이번 과제를 통해서 Builder패턴이 왜 탄생했고 왜 사용하는지 알게되었다.
역시 코드는 공부하고 알고 짜는게 재밌다...
▶3,4,5
[Spring Boot] @AllArgsConstructor과 @RequiredArgsConstructor 사용을 "지양"하는 이유, 생성자에관한 어노테이
개발하다보면 여기저기 Lombok코드들이 많이 쓰인다. 어느순간부터 코드에 들어와있던 녀석들...을 알고써보면 좋을 것 같아서 글을 쓴다. 역시 개발은 공부하고 내가 아는걸 코드로 작성해야지
learning-study.tistory.com
여기에 생성자 어노테이션을 정리해두었다.
사실 이번 과제하기 전에는 그냥 뭔지도 잘 모르고 사용했던 어노테이션이었는데
이번 과제를 통해서 정확하게 알게되었고
@AllArgsConstructor, @RequiredArgsConstructor 사용을 지양해야하는 이유와
그럼에도 내가 @AllArgsConstructor는 "지양"하지만 @RequiredArgsConstructor을 사용하는 이유에 대해서 적어놓았다.
그 이유는
- 사용자가 final 키워드를 붙이면서 필수 파라미터에 대한 인지를 하고 필드를 선언한다는 점
- 스프링에서는 객체의 생성자만 만들어두면 스프링에서 알맞은 타입과 이름의 빈을 찾아서 주입해주기 때문에, 필드 순서가 바뀌거나 해도 타입+이름 기반으로 동작하니 @RequiredArgsConstructor 를 사용해도 큰 무리가 없음
이다.
또한
[Spring Boot] 내가 클래스 선언부에 @Builder를 사용하지 않는 이유
Entity객체를 생성할 때 lombok의 @Builder를 많이 적용한다. @Builder를 사용할경우, 일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access = AccessLevel.PROTECTED) 를 사용한다. 이유: 무분별
learning-study.tistory.com
이 글에서는 @AllArgsConstructor을 사용하지 않고 @Builder를 사용하는 방법에대해서 적어놓았다!
(클래스단이 아닌 생성자에 @Builder를 붙이면 된다.)
확실히 이건 왜 쓰면 안되고 이걸 안쓰면 이렇게해주면 되는구나!
를 이해하고 코드를 짜니까 더 재밌었다. delombok이라는 기능에 대해서도 알게되었다.
▶ 6, 7. @NoArgsConstructor에 (access = AccseeLevel.PROTECTED)를 붙이는 이유, JPA에서 엔티티는 반드시 기본생성자를 가져야한다.
[Spring Boot] JPA Entity에서 기본 생성자를 만드는 이유, Reflection이란? proxy 객체란? @NoArgsConstructor(acces
Spring Data JPA에서 Entity에 기본 생성자가 필요한 이유가 무엇일까? @NoArgsConstructor(accsee = AccseeLevel.PROTECTED)를 왜 붙이는거지? 궁금해졌다. 궁금하면 공부해야지~ ▶Reflection이란? 그 전에 알아야하는
learning-study.tistory.com
위 글에 자세하게 작성해놓았다!
아니.. 이런 의미가..있었다니...
아직 모르는게 너무 많은 것 같다.
추가로 JPA에 대해서 더 깊게 공부해보고 싶다..!
'일기📝 > 멋쟁이사자처럼 12기' 카테고리의 다른 글
[멋쟁이사자처럼12기] 멋사 백엔드 스프링 합격/서류/면접 후기 (0) | 2024.03.18 |
---|
현재 백엔드 세미나에서는 쇼핑몰 만들기 프로젝트로 공부를 한다.
2주차 과제는 Service와 Entity, 각 상황에 맞는 DTO를 만들어서 Controller와 연결하기였다.
이 과제를 하면서 알게된것을 정리해보자면
1. Entity에서 원시타입과 래퍼클래스를 사용하는 기준
2. Builder 패턴과 Lombok의 @Builder
3. @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor에 관해서 더 자세히
4. @AllArgsConstructor와 @RequiredArgsConstructor의 문제점
5. 그럼에도 불구하고 내가 RequiredArgsConstructor 어노테이션을 사용하는 이유
6. @NoArgsConstructor에 (accsee = AccseeLevel.PROTECTED)를 붙이는 이유
7. JPA에서 엔티티는 반드시 기본생성자를 가져야한다.
정도가 있다.
처음부터 차근차근 보면
▶ 1. Entity에서 원시타입과 래퍼클래스를 사용하는 기준

[Spring Boot] Entity에서 원시타입과 래퍼클래스를 사용하는 기준
개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다. 왜 long를 안쓰고 Long를 쓸까? 이 둘의 차이점은 무엇일까? 궁금해졌다. 바로
learning-study.tistory.com
위 글에 작성해놓았다!
▶ 2. Builder 패턴과 Lombok의 @Builder
[Spring Boot] Builder 패턴과 Lombok의 @Builder
▶빌더패턴이 뭐지? 빌더패턴은 생성자로만 객체를 생성했을 때 문제를 해결하기 위한 패턴이다. ▶생성자로 객체 생성 생성자로만 객체 생성을 하면 코드가 복잡해지고 가독성이 떨어진다. pub
learning-study.tistory.com
이 글에 정리를 해두었다!
과제를 하기전에 Builder패턴이 모지?? 했었는데
이번 과제를 통해서 Builder패턴이 왜 탄생했고 왜 사용하는지 알게되었다.
역시 코드는 공부하고 알고 짜는게 재밌다...
▶3,4,5
[Spring Boot] @AllArgsConstructor과 @RequiredArgsConstructor 사용을 "지양"하는 이유, 생성자에관한 어노테이
개발하다보면 여기저기 Lombok코드들이 많이 쓰인다. 어느순간부터 코드에 들어와있던 녀석들...을 알고써보면 좋을 것 같아서 글을 쓴다. 역시 개발은 공부하고 내가 아는걸 코드로 작성해야지
learning-study.tistory.com
여기에 생성자 어노테이션을 정리해두었다.
사실 이번 과제하기 전에는 그냥 뭔지도 잘 모르고 사용했던 어노테이션이었는데
이번 과제를 통해서 정확하게 알게되었고
@AllArgsConstructor, @RequiredArgsConstructor 사용을 지양해야하는 이유와
그럼에도 내가 @AllArgsConstructor는 "지양"하지만 @RequiredArgsConstructor을 사용하는 이유에 대해서 적어놓았다.
그 이유는
- 사용자가 final 키워드를 붙이면서 필수 파라미터에 대한 인지를 하고 필드를 선언한다는 점
- 스프링에서는 객체의 생성자만 만들어두면 스프링에서 알맞은 타입과 이름의 빈을 찾아서 주입해주기 때문에, 필드 순서가 바뀌거나 해도 타입+이름 기반으로 동작하니 @RequiredArgsConstructor 를 사용해도 큰 무리가 없음
이다.
또한
[Spring Boot] 내가 클래스 선언부에 @Builder를 사용하지 않는 이유
Entity객체를 생성할 때 lombok의 @Builder를 많이 적용한다. @Builder를 사용할경우, 일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access = AccessLevel.PROTECTED) 를 사용한다. 이유: 무분별
learning-study.tistory.com
이 글에서는 @AllArgsConstructor을 사용하지 않고 @Builder를 사용하는 방법에대해서 적어놓았다!
(클래스단이 아닌 생성자에 @Builder를 붙이면 된다.)
확실히 이건 왜 쓰면 안되고 이걸 안쓰면 이렇게해주면 되는구나!
를 이해하고 코드를 짜니까 더 재밌었다. delombok이라는 기능에 대해서도 알게되었다.
▶ 6, 7. @NoArgsConstructor에 (access = AccseeLevel.PROTECTED)를 붙이는 이유, JPA에서 엔티티는 반드시 기본생성자를 가져야한다.
[Spring Boot] JPA Entity에서 기본 생성자를 만드는 이유, Reflection이란? proxy 객체란? @NoArgsConstructor(acces
Spring Data JPA에서 Entity에 기본 생성자가 필요한 이유가 무엇일까? @NoArgsConstructor(accsee = AccseeLevel.PROTECTED)를 왜 붙이는거지? 궁금해졌다. 궁금하면 공부해야지~ ▶Reflection이란? 그 전에 알아야하는
learning-study.tistory.com
위 글에 자세하게 작성해놓았다!
아니.. 이런 의미가..있었다니...
아직 모르는게 너무 많은 것 같다.
추가로 JPA에 대해서 더 깊게 공부해보고 싶다..!
'일기📝 > 멋쟁이사자처럼 12기' 카테고리의 다른 글
[멋쟁이사자처럼12기] 멋사 백엔드 스프링 합격/서류/면접 후기 (0) | 2024.03.18 |
---|