Spring Framework

Spring Framework/JPA

[JPA] Spring JPA 프록시 객체와 지연로딩이란 무엇인가, 사용하는 이유

지연로딩(LAZY Loading)이란 : 지연로딩은 연관된 엔티티를 실제로 사용할 때까지 데이터베이스에서 로딩을 지연시키는 기법입니다. 예를 들어 엔티티 A와 B가 일대다 관계를 가지고 있을 때, A 엔티티를 조회하더라도 B 엔티티를 바로 로딩하지 않고, 실제로 B엔티티의 내용이 필요한 시점에 해당 엔티티를 데이터베이스에 가져오는 방식입니다. 지연로딩의 장점 및 사용하는 이유 : 불필요한 데이터를 미리 로딩하지 않아 메모리를 절약하고, 성능 향상을 이룰 수 있습니다. 주의할 점 지연로딩을 사용하면서 영속성 컨텍스트가 유지되는 시점에서 연관된 엔티티를 로딩하지 않고 사용하려고 할 때, LazyInitializaionException이 발생할 수 있습니다. 영속성 컨텍스트가 사라질 경우, Proxy 엔티티를..

Spring Framework/JPA

[JPA] Spring-JPA 엔티티 값 Update 하기 - save(), 더티체킹(Dirty Checking - set())

JPA를 이용해 update를 구현하는 방법에 대해 설명하고자 합니다. (1) Spring JPA DATA를 이용해 save() 함수에 엔티티의 id값이 담겨있고 엔티티의 변경된 값이 있으면 save() 함수를 통해 업데이트를 할 수 있습니다. 하지만 save() 함수를 통해 모든 값을 변경하지 않고 업데이트하는 경우 변경한 값을 제외한 값들은 null 처리가 되어 업데이트되는 오류가 생길 수 있습니다. (2) 모든 값을 변경하지 않는 경우 변경 감지(더티 체킹)을 통해 업데이트를 할 수 있습니다. 1. save() 를 통해 기존의 엔티티 값 수정하기 엔티티의 모든 속성값을 변경해 주어야 오류가 생기지 않습니다. // 기존 엔티티 조회 후 수정 EntityA existingEntity = reposito..

Spring Framework/Spring boot

Spring JPA로 페이징 처리하기 - @PageableDefault와 Pageable 활용

1. @PageableDefault() 사용하여 페이징 처리하기여러 개의 리스트를 한 번에 보여주지 않고, 정해진 개수로 페이징 처리할 때 @PageableDefault() 어노테이션을 사용하면 쉽게 처리할 수 있습니다. Service 클래스@Transactional(readOnly = true) public Page BoardList(Pageable pageable) { return postsRepository.findAll(pageable);}우리는 JpaRepository를 상속받은 Repository의 findAll 함수를 사용하여 파라미터로 Pageable 객체를 넣어주면 간단하게 페이징 기능을 구현할 수 있습니다.Page 를 타입으로 지정하면, 반드시 파라미터로 Pageabl..

Spring Framework/Spring boot

[Springboot] 스프링 시큐리티 @AuthenticationPrincipal로 로그인 정보 전달하기, sec:authorize 사용하기

1. @AuthenticationPrincipal 어노테이션이란 무엇인가? 스프링 시큐리티를 사용하여 사용자 인증을 처리하고 있는 경우, @AuthenticationPrincipal 어노테이션을 통해 현재 인증된(로그인된) 사용자의 정보를 편리하게 가져와 사용할 수 있습니다. @AuthenticationPrincipal은 스프링 프레임워크에서 사용되는 어노테이션 중 하나로, 사용자 인증 정보를 주입받기 위해 사용합니다. 주로 웹 애플리케이션에서 인증된(로그인한) 사용자의 정보를 Controller이나 Service 클래스에서 접근하고 활용하는 데 사용됩니다. @AuthenticationPrincipal을 통해 매번 인증된 사용자의 정보를 DB에 접근해서 데이터를 가져오는 것을 막을 수 있습니다. 한 번 ..

kylo
'Spring Framework' 카테고리의 글 목록 (15 Page)