본문 바로가기

스프링

(10)
[Spring Data JPA] 페이지네이션 게시판을 생각해보자. 정말 수많은 데이터가 있을 것이다. 매번 이 모든 데이터를 호출하기는 성능적으로 가능할 수가 없다. 그래서 우리는 페이지에 맞게 일정 수에 해당하는 데이터만 가져온다. 그게 페이징이다.이 페이징을 JPA로 어떻게 하는지 보고, 그것을 Spring Data JPA에서 얼마나 더 간단히 하는지 보자.    Pageable @GetMapping("page")public String Page(Pageable pageable){ ''' 코드'''}  먼저 컨트롤러에서 Pageable 인터페이스 타입을 파라미터로 받으면 된다.     Pageable 인터페이스를 보자.밑을 더 내려보면 getPageNumber(); getPageSize(); 와 같이 페이징에 관련된 기능과 정렬을 위한 기능들이..
[Spring Security] Spring Security Configuration 와 BCrypt 암호화 메서드 이전에 JWT가 무엇인지 알고, 인가 인증에 대해서 글을 기록해뒀다.이번에는, 스프링에서 보안을 위해 쓰이는 Spring Security에 대해서 알아보고, 이를 어떻게 사용해볼 수 있는지 알아보겠다.  2024.07.17 - [Spring] - [Spring] 인증, 인가 그리고 JWT [Spring] 인증, 인가 그리고 JWTSpring security를 이용하여  프로젝트에 보안 시스템을 구성할때 내가 JWT에 대한 전문지식이 부족한 것을 깨달았다. 그래서 포스팅을 해보며, JWT와 Spring security에 대해서 확실한 지식을 쌓고자 한jinnocode.tistory.com    Spring Seucurity란?       Spring Security는 인증, 권한 관리 그리고 데이터 보호 ..
[Spring] 지연로딩 vs 즉시로딩 내가 이전에 페치 조인에 대해 포스팅 한 적이 있다.페치 조인을 사용하는 이유는 지연로딩 환경에서 N+1 문제를 없애기 위해서라고 말했다. 이번에 공부를하면서 지연로딩과 즉시로딩이 뭔지 다시 한번 확실히 깨닫게 되었지만, 인간은 망각의 동물. 잊지 않기 위해 기록하자.(면접에 나올 수도)   2024.07.15 - [Spring] - [Spring] 컬렉션 fetch join(페치 조인) 을 이용한 성능 최적화 및 페이징 2024.07.14 - [Spring] - [Spring] JPA 에서 fetch join(페치 조인)이란    지연로딩이란?이전에 프로젝트를 하다가 지연로딩을 사용하다가 일정 부분이 되지 않자 즉시로딩으로 바꿨던 기억이 난다.(페치 조인을 모르던 당시) 지연로딩이 뭔지 다시 한번 알아..
[Spring JPA] JPA 하이버네이트에서의 프록시 프록시 => 가짜객체 라는 것은 이미 스프링을 학습하면서 알게 되었고, 어떠한 장점들이 있는지는 기억이 난다.JPA 하이버네이트에서도 프록시를 사용하고 있다.  사실 프록시 객체를 쓰는 이유는 지연 로딩을 사용하기 위해서라고 볼 수 있다. 하지만 이번에는 프록시가 뭔지 한번 더 알아보고 하이버네이트에서는 어떻게 프록시 객체를 사용하는지만을 알아 보도록 하자.     이러한 객체가 있을떄, Member를 참조할 때 Team도 함께 가져와야 하는것일까?? 실제로, 비즈니스 로직에 따라 다른데, Team을 필요로 한다면 당연히 가져와야 한다. 하지만, 필요로 하지 않는데 계속 가져오지 않는 것은 낭비로 이어진다. JPA 에서는 이러한 낭비를 줄이기 위해 프록시 개념을 도입한다.         프록시란?프록시는..
[Spring] 인증, 인가 그리고 JWT Spring security를 이용하여  프로젝트에 보안 시스템을 구성할때 내가 JWT에 대한 전문지식이 부족한 것을 깨달았다. 그래서 포스팅을 해보며, JWT와 Spring security에 대해서 확실한 지식을 쌓고자 한다.  먼저, 우리는 사용자의 인증 및 인가를 하기 위해 세션 또는 토큰을 사용한다. 그 전에 인증과 인가의 차이점을 짚고 넘어가보자.        인증과 인가의 차이비슷하지만 아예 다른 두 말. 인증 : 어떤 사실 또는 어떤 문서가 진짜인지 증명하는 과정을 가리키는 용어인가 :  어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것, 즉 접근 권한을 얻는 일 쉽게 말하여, 인증은 로그인을 하는 과정이라고 생각한다. 네이버 메일에 로그인 하려고..
컴포넌트 스캔 이전에 까지는 스프링 빈을 등록할때 @Bean을 코드에 작성하여 진행하였다. 이렇게 등록하는 것을 수동으로 하나하나씩 하기때문에, 수동 빈 등록이라고 부른다. 누가봐도 귀찮은 과정이기 때문에, 자동적으로 빈을 등록하는 과정에 대해서 알아 보자. 💻 @Component & @ComponentScan @Component 어노테이션을 쓰면 이 어노테이션이 붙은 클래스가 스프링 빈의 등록대상이 된다. 사용방법은 간단하게 스프링 빈으로 등록을 원하는 클래스 상단에 해당 어노테이션을 붙여주면 된다. @Component public class MemomryMemberRepository implements MemberRepository() @ComponentScan 어노테이션을 붙여주면, 이름 그대로 @Componen..
싱글톤 컨테이너 이전에 우리는 스프링 컨테이너의 존재와 필요성에 대해서 느꼈다. 이러한 스프링 컨테이너는 싱글톤 패턴의 형태로 되어 있는데, 싱글톤은 무엇인지 그리고, 싱글톤 컨테이너는 어떻게 구성되어 있는지 알아보자. 💻 싱글톤 패턴 먼저, 싱글톤 패턴이 무엇인지부터 알아보자. 예전 학부 수업중 디자인 패턴을 몇개 알아본 적이 있는데, 그 중에 싱글톤 패턴에 대해서도 다뤘었다. 그 당시는 어려워서 자세한 구현 방법은 제대로 알지 못하였고, 객체를 하나만 생성한다는 것만 알았다. 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성 되는 것을 보장하는 디자인 패턴이다. 이 싱글톤 디자인 패턴을 따르는 것들은 객체 인스턴스가 2개 이상 생성되지 못한다. 이렇게 구성하는 방식은 꽤나 간단하다. public class Sing..
스프링 빈과 스프링 컨테이너 저번 포스팅에서는 DI(Dependency Injection)에 대해서 알아 보았다. 이번에는 스프링에서 DI를 통해 의존관계를 주입해주는 이 스프링 컨테이너에 대해서 알아보자. 💻 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 먼저, 스프링 컨테이너가 생성되는 코드를 보자. 여기서 AoolicationContext라는 인터페이스를 스프링 컨테이너라고 한다. 위 코드는 AppConfig라는 클래스에 속해있는 스프링 빈들을 스프링 컨테이너에서는 스프링 빈들의 생성,삭제,관리등을 담당한다. 스프링 빈에 대해서 간단하게 짚고 넘어가자면, 하나의 자바 객체이다. 우..