프록시(3)
-
[JPA] 프록시와 지연 로딩
프록시와 연관관계 관리 객체가 DB에 저장되어 있으므로 연관된 객체를 자유롭게 탑색하기 어렵습니다. JPA 구현체들은 이 문제를 해결하기 위해 프록시라는 기술을 사용합니다. 프록시를 사용하면 연관된 객체를 처음부터 DB에서 조회하는 것이 아니라, 실제 사용하는 시점에 조회할 수 있습니다. 하지만 자주 함께 사용되는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적입니다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원합니다. 지연 로딩 Member 객체가 Team 객체를 @ManyToOne으로 참조하고 있을 때, Member 객체가 Team 객체와 관련된 정보를 사용하지 않는다면 연관된 Team 엔티티까지 함께 조회하는 것은 효율적이지 않습니다. 이런 문제를 해결하기 위해 엔티티가 실제 ..
2023.04.09 -
[Nginx] Nginx와 프록시
Nginx와 프록시 클라이언트 레이어(vue, javascript, react...등)서비스를 빌드 하는데엔 여러 방법이 있습니다. 회사 서비스를 테스트 서버에 빌드 후 실행하는 작업을 앞두고 있어서 관련 medium 아티클을 참고해보려 합니다. Vue와 Java(Spring boot)서버를 빌드/실행하는 방법 중 Vue static content를 NGINX 웹 서버를 이용해 빌드하는 방법을 택했습니다. NGINX는 웹 서버를 실행시키고, 프록싱, 캐싱, 로드 밸런싱, 미디어 스트리밍등을 위한 오픈 소스 소프트웨어 입니다. 웹 서버의 성능 최적화를 위해 디자인 되었습니다. 또한 HTTP 서버 가용성은 email(IMAP, POP3, SMTP)를 위한 기능으로 사용할 수 있으며 HTTP, TCP, UDP..
2021.10.29 -
[ORM 표준 JPA] 15장 프록시 심화
어느새 스터디가 한 주를 남기고 있습니다. 넥스트 스텝 교육을 병행하기가 이렇게 힘들줄은 생각못한 자신에게 반성시키고 싶지만 그래도 고생한만큼 마무리까지 잘하도록 하겠습니다. JPA 프록시 심화 우선 프록시는 실제 DB에 접근하지 않아도 된다는 성능에 있어 강점을 가진 엔티티 호출 방식입니다. JPA는 지연 로딩을 통해 원본 엔티티 대신 프록시를 참조하며 프록시는 원본 엔티티를 상속받아 객체의 참조를 보관하고 있습니다. 때문에 메서드 호출을 프록시로 할 경우 프록시는 실제 엔티티에 호출을 전달하게 됩니다. 프록시 테스트 중 member 엔티티에서 Spring Data JPA 프록시 호출 메서드인 getById를 사용해도 프록시가 생성되지 않는 오류가 있었는데 원인은 엔티티 구조상 있는 것으로 보여서 찾고..
2021.08.30