Spring

@NoArgsConstructor(access = AccessLevel.PROTECTED)

doriver 2024. 8. 5. 11:40

@NoArgsConstructor(access = AccessLevel.PROTECTED)

 

1. 기본 생성자 자동 생성

: 해당 클래스에 기본 생성자가 자동으로 추가됩니다. 기본 생성자는 매개변수가 없는 생성자를 의미합니다.

 

2. 접근 제어자 설정

: 생성된 기본 생성자의 접근 제어자가 protected로 설정됩니다.
인스턴스는 클래스 내부, 같은 패키지, 또는 하위 클래스에서만 생성할 수 있습니다. 이 설정은 특정 클래스가 외부에서 직접 인스턴스화되는 것을 방지하고, 의도된 방식으로만 객체가 생성되도록 제어할 때 유용

 

@Builder랑 같이 쓰는데 

어떤 이유때문에, 어떤 역할을 하는지 등 알아봐야 할듯

 

 

 

Entity의 **Proxy 조회** 

엔티티의 연관 관계에서 지연 로딩의 경우에는 실제 엔티티가 아닌 프록시 객체를 통해서 조회

프록시 객체를 사용하기 위해서 JPA 구현체는
, 실제 엔티티의 기본 생성자를 통해 프록시 객체를 생성하는데, 이 때 접근 권한이 private이면 프록시 객체를 생성할 수 없다.

이 때 즉시로딩으로 구현하게 되면, 접근 권한과 상관없이 프록시 객체가 아닌 실제 엔티티를 생성하므로 문제가 생기지 않는다

Proxy와 지연, 즉시 로딩

 

 

 

https://velog.io/@kevin_/%EB%82%B4%EA%B0%80-NoargsConstructor-access-AccessLevel.PROTECTED%EB%A5%BC-%EC%99%9C-%EC%9E%91%EC%84%B1%ED%96%88%EC%9D%84%EA%B9%8C

 

내가 @NoArgsConstructor (access = AccessLevel.PROTECTED)를 작성했던 이유

그 때 당시에는 Spring은 물론 Java에 대한 개념도 매우 약할 때라 지금도 약하지만레퍼런스의 코드를 가져다 사용하기에 급급했다.당시의 나는 해당 개념에 대한 정확한 이해보다는 기능 구현이

velog.io

 

 

https://cobbybb.tistory.com/14

 

@NoargsConstructor(AccessLevel.PROTECTED) 와 @Builder

@NoargsConstructor(AccessLevel.PROTECTED) 와 @Builder를 함께 사용할때 주의할 점에 대해서 서술합니다. "왜" 안되는지와 "왜" 이렇게 해결 할 수 있는지에 대해 집중하여 서술합니다. 1. 왜 NoargsConstructor(Access

cobbybb.tistory.com