본문 바로가기

전체 글141

[DataBase] 인덱스?? 어떤분의 블로그를 보다가 인덱스라는 개념이 나왔다. 나에게 인덱스란 단순히 검색 쿼리를 빠르게 할 수 있다 정도였다. 맞는 말이지만 해당 블로그에서는 인덱스를 어떻게 적용하는지 적용해서 어떤 결과가 나왔는지와 같은 얘기가 나왔는데 단순히 빠르다 라는 개념밖에 모르니...이해하기 쉽지 않아서 자세하게 정리해본다 Index?? 인덱스란 정렬이다. 인덱스는 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상시키기 위한 자료구조이다. 예를 들어 내가 원하는 내용을 찾기 위해 책의 모든 페이지를 찾는 것은 시간이 오래걸린다. 이때 책의 색인("찾아보기")와같은 인덱스 역할을 하는 것을 통해 빠르게 찾을 수 있다. 영어 사전에서도 알파벳순 정렬도 마찬가지다. 알파벳순으로 정렬되어있기때문에 빠르게 찾을 수 있다.. 2023. 11. 12.
[MSA & DDD] DDD?? 어떤 블로그님의 코드를 보다가 간접참조라는 단어가 나왔고 간접참조를 공부하다보니 DDD라는 개념에 대한 선행이 필요한 것같아서 정리해본다 DDD란?? MSA와 관계가 있지만 그걸 설명하게 앞서 DDD부터 얘기해보자 도메인은 여러 하위 도메인으로 구성된다.(도메인 : 영역, 집합, 유사한 업무의 집합) DDD란 비지니스 도메인 별로 나누어 설계하는 방식이다 왜?? 나누어 설계하느냐? 비지니스를 도메일별로 나눔으로써 확장가능하고 모듈간의 의존성은 최소화하고 응집성을 최대화할 수 있기 때문이다. 다시말해 DDD의 핵심 목표는 "Loosly coupling"과 "High cohesion"이다 (앞서 얘기한 의존성 최소화, 응집성 최대화) 여기서 간단하게 MSA를 말하자면 MSA는 DDD 기반으로 아키텍쳐 패턴을.. 2023. 11. 12.
[JPA] 프록시에 대하여 JPA에 대해 공부하다보면 프록시라는 단어를 알게된다. 이전의 나는 그냥 가짜 객체다 정도까지만 알고 있었다. 이번에는 조금더 자세히 알아보기로 한다 JPA를 공부하면 연관관계 로딩 방식중 지연로딩이라는 것을 알게된다. 연관된 엔티티를 실제로 사용하기 전까지 조회하지 않는 것이 지연로딩이다. 이렇게 지연하면 즉시 로딩 방식에 비해 최초 로딩 시간이 빠르고 메모리 소모가 적다. 그런데 어째든 해당 연관 필드에 null이 들어가는 건 좀 그러니 뭘 채워야하는데 그게 바로 가짜 엔티티 프록시 객체이다. 프록시 객체는 엔티티 객체의 상속이다 프록시 객체가 엔티티 객체를 대체하지만 초기화후에는 엔티티처럼 작동해야한다. 때문에 엔티티 객체를 상속해서 만들어진다. 이때문에 JPA에서 엔티티 객체의 기본 생성자 접근제.. 2023. 11. 12.
[JPA] JPA 와 Hibernate , Spring Data JPA JPA를 공부하다보니 Hibernate라는 개념이 자주 나왔다. 예전에는 아 그냥 JPA하면 Hibernate라는 개념이 쓰이는 구나 했지만 요즘은 하나를 공부해도 해당 클래스의 시작점을 보고 싶다. 그래서 JPA와 Hibernate에 대해 공부하게 되었다 JPA는 기술 명세이다 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 여기서 인터페이스라는 점을 주목해야한다. 특정기능을 하는 라이브러리가 아니라 관계형 데이터베이스를 어떻게 사용해야하지는 정의하는 하나의 방법인 것이다. JPA를 정의한 javax.persistence 패키지를 보면 Interface, enum, exception,annotaion등 다양한 것들로 구성되어있다 그렇다면 Hibernate는 무엇이냐? JPA.. 2023. 11. 10.
[JPA] JPA엔티티에 기본생성자가 필요하다? JPA는 엔티티에 기본생성자, 즉 매개변수를 받지 않는 생성자를 만드는 것을 강제하고 있다. 물론 기본 생성자 없이도 정상적으로 작동하는 경우가 있지만 공식 스펙에따르면 기본생성자가 있어야한다고 기재되어있다. 그렇다면 왜 기본 생성자를 만들도록 강제할까?? 앞서 기본 생성자를 강제하는 경우 @RequestBody와 @ModelAttribute에 대해서 알아봤다. 그중에서도 @RequestBody는 Reflection을 이용해 필드, 메서드 등의 클래스의 모든 정보에 접근하여 매핑해주었다. 다만 Reflection은 생성자 호출을 할 수없었다. 그래서 기본생성자를 강제하였다. https://haebing.tistory.com/72 [Spring] @ModelAttribute와 @RequestBody에 대해.. 2023. 11. 10.
[Spring Security] 권한 부여 구성 : 액세스 앞에 얘기한 스프링 시큐리티는 회원가입할때 비밀번호 해시화, 로그인시 비밀번호 확인하고 토큰 지급 까지의 과정이다. 이제는 인증이 완료된후 사용자 세부정보가 보안 컨텍스트에 저장된후 요청이 권한 부여 필터로 위임되어 어떤 단계를 걸치는지 알아볼 것이다. 간단하게 얘기하자면 권한 부여 필터가 요청을 허용할지 결정하고 권한이 부여되며 요청이 컨트롤러로 전달된다 앞의 UserDetails 구현한 클래스를 보면 Collections 2023. 11. 10.
728x90