[Spring][JPA] JPA 영속성 컨텍스트 with 프록시 - 2
·
Dev Framework/Spring
프록시프록시란?JPA에서 말하는 프록시(Proxy) 는 실제 엔티티 객체를 감싸고 있는 가짜 객체(대리 객체)입니다.이 프록시는 실제 객체처럼 행동하지만, 내부적으로는 실제 객체를 참조하지 않은 상태로 존재합니다.실제 객체가 필요한 순간(=속성 접근)까지는 DB에 접근하지 않고 대기하다가,속성이 호출되는 시점에 DB에서 데이터를 조회해서 영속성 컨텍스트에 등록하고, 실제 객체처럼 행동합니다.Member member = entityManager.getReference(Member.class, 1L);System.out.println(member.getClass());// class com.example.Member$HibernateProxy$...System.out.println(member.getName..
[Spring][JPA] JPA 영속성 컨텍스트 완전 정복 - 1
·
Dev Framework/Spring
영속성 컨텍스트1. 영속성 컨텍스트 정의영속성 컨텍스트란, 엔티티(Entity)를 저장하는 가상의 메모리 공간(1차 캐시)입니다.Java Persistence API(JPA)에서 엔티티 객체를 영구 저장소(데이터베이스)에 저장하거나 조회할 때, 직접 DB와 바로 통신하는 것이 아니라, 중간에 있는 영속성 컨텍스트를 통해 처리합니다. 2. 영속성 컨텍스트의 역할역할설명1차 캐시엔티티를 메모리에 저장해두고 동일한 엔티티 재조회 시 캐시에서 반환동일성 보장같은 트랜잭션 내에서는 같은 엔티티 인스턴스를 보장 (== 비교 가능)변경 감지 (Dirty Checking)엔티티 값이 변경되면 트랜잭션 종료 시 자동으로 UPDATE 쿼리 생성지연 로딩 (Lazy Loading)연관 엔티티는 실제 사용할 때까지 SQL을..
[SpringBoot] Lombok 사용 시 부모 생성자 호출 문제와 해결 방안
·
Dev Framework/Spring
Lombok과 상속: 부모 생성자 호출의 제약사항Lombok은 Java에서 보일러플레이트 코드를 줄여주는 유용한 라이브러리입니다. Lombok을 사용하면, 간단한 어노테이션으로 getter, setter, 생성자 등을 자동으로 생성할 수 있습니다. 그러나 Lombok을 사용할 때, 특히 상속 관계에서 부모 클래스의 생성자를 호출하는 데 몇 가지 제약이 따릅니다. 이 글에서는 이러한 제약 사항과 그 이유에 대해 설명하겠습니다. Lombok의 생성자 어노테이션먼저 Lombok의 주요 생성자 어노테이션에 대해 간단히 살펴보겠습니다.@AllArgsConstructor: 모든 필드를 인자로 받는 생성자를 생성합니다.@NoArgsConstructor: 인자가 없는 기본 생성자를 생성합니다.@RequiredArgs..
[Spring Security] 02. Http Basic이 아닌 OAuth2를 사용하는 이유
·
Dev Framework/Spring
HTTP Basic 인증 방식의 주요 취약점 중 하나는 클라이언트가 서버에 요청을 할 때마다 사용자의 자격증명(사용자 이름과 비밀번호)을 인코딩된 형태로 전송해야 한다는 것입니다. 이 방식은 사용자의 자격증명을 매 요청마다 Authorization 헤더에 포함시켜 전송합니다. HTTP Basic 인증은 인증 정보를 Base64 형식으로 인코딩하여 전송하지만, 이는 암호화 방식이 아니라 단순 인코딩에 불과하기 때문에, 인증 정보가 인터넷을 통해 전송될 때 쉽게 노출될 수 있습니다. HTTP Basic 인증의 취약점 평문 전송 위험: Base64 인코딩은 단순한 인코딩 방식이므로, 네트워크 스니핑을 통해 쉽게 디코딩되어 자격 증명 정보가 노출될 수 있습니다. 이는 특히 암호화되지 않은 HTTP 연결에서 문제..
[Spring Security] 01. Spring Security에 대해서
·
Dev Framework/Spring
Spring Security: 스프링 애플리케이션의 보안 강화 Spring Security는 Java 기반의 애플리케이션, 특히 Spring 기반의 애플리케이션에 보안 기능을 추가하는데 사용되는 강력한 인증 및 권한 부여 프레임워크입니다. 웹 보안 및 엔터프라이즈 애플리케이션의 보안을 위해 설계된 이 프레임워크는 스프링 애플리케이션의 보안을 적용하는 과정을 크게 간소화합니다. 주요 기능 Spring Security는 다음과 같은 다양한 보안 기능을 제공합니다: 인증(Authentication): 다양한 인증 메커니즘 지원 (폼 기반 로그인, LDAP, JWT, OAuth2 등). 권한 부여(Authorization): 인증된 사용자의 자원 접근 권한 결정. 보안 헤더(Secure Headers): HTT..
[Spring] @Controller 와 @RestController의 차이
·
Dev Framework/Spring
Spring Framework에서 @RestController와 @Controller 애너테이션은 컨트롤러의 역할을 정의하는 데 사용되지만, 주로 사용되는 목적과 방식에 차이가 있습니다. 이 두 애너테이션의 주요 차이점은 다음과 같습니다: @Controller MVC 컨트롤러: @Controller 애너테이션은 Spring MVC의 컨트롤러로 사용됩니다. 이 컨트롤러는 주로 웹 애플리케이션에서 HTML 페이지를 렌더링하는 데 사용됩니다. 뷰 반환: 메소드가 반환하는 값은 보통 뷰 이름입니다. Spring은 이 뷰 이름을 사용해서 정의된 뷰 리졸버(view resolver)를 통해 해당하는 뷰를 찾고, 모델 데이터를 뷰로 전달한 후 클라이언트에게 HTML 형태로 렌더링합니다. ResponseBody 사용:..
[Spring]Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed 해결 방법
·
Dev Framework/Spring
UnableToConnectException: Public Key Retrieval is not allowed오류는 MySQL에 연결할 때 발생하는 보안 관련 오류입니다. 이 오류는 MySQL 서버가 클라이언트에게 RSA 공개 키를 전송하는 방식으로 비밀번호를 인증하려고 할 때, 클라이언트(여기서는 Spring Boot 애플리케이션)가 이러한 방식의 인증을 허용하지 않을 때 발생합니다. 문제 해결 방법: 이 문제를 해결하는 가장 간단한 방법은 application.properties 파일에 있는 데이터베이스 연결 URL에 allowPublicKeyRetrieval=true 설정을 추가하는 것입니다. 그러나 보안상의 이유로, 이 옵션을 사용할 때는 useSSL=false 옵션과 함께 사용하지 않도록 주의해..
[Spring][완독] 스프링 부트3 자바 백엔드 개발 입문 - 출판사 길벗
·
Dev Framework/Spring
2024.02.11 - 2024.03.02 완독 깃허브 예제 코드 클론 코딩: https://github.com/glaxyt/SpringBootPractice
개발자 성현
'Dev Framework/Spring' 카테고리의 글 목록 (3 Page)