본문 바로가기

분류 전체보기

(43)
[Spring] Spring Web Mvc의 Dispatcher Servlet(디스패처 서블릿)의 알아보기 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 단순히 HTTP통신을 할 때 request, response만 생각한채 개발을 해온 것 같아 Dispatcher Servlet에 대해서 이해해보고자 정리합니다. Dispatcher Servlet(디스패처 서블릿) 이란? Dispatcher는 "보내다"를 의미합니다. 그리고 Servlet은 웹 애플리케이션을 만들 때 필요한 인터페이스를 의미합니다. 실제로 디스패처 서블릿도 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller) 패턴이라고 정의할 수 있습니다. 이것을 보다 자세히 설명하자면 클라이..
[JPA] 임베디드 타입이란? 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 임베디드 타입을 다시 복습하고자 정리했습니다. 임베디드 타입(Embedded Type)이란? 복합 값 타입을 의미합니다. 새로운 값 타입을 직접 정의할 수 있습니다. JPA는 임베디드 타입(embedded type)이라고 불려집니다. 주로 기본 값 타입을 모아서 만들어서 복합 값 타입이라고도 하며, int, String과 같은 값 타입을 의미합니다. 💡 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체입니다. 데이터가 변해도 식별자로 지속해서 추적 가능합니다. 예)회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Intege..
[JPA] 프록시와 지연로딩/즉시로딩의 관계 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 Team과 Member가 1 : N 으로 매핑된다고 가정합니다. 이 때 Member를 조회할 때 Team도 함께 조회해야 할까요? 이는 비즈니스 상황에 따라 다르게 해야합니다. 비즈니스 로직에서 Team을 필요로 하지 않을 때에는 꼭 Member를 조회할 때 Team까지 조회할필요가 없습니다. 왜냐하면 성능저하(낭비)가 발생할 수 있기 때문입니다. JPA는 이러한 낭비를 하지 않기 위해 지연로딩과 프록시라는 개념으로 해결합니다. 프록시(Proxy)란? 간단하게 말해서 가짜 객체를 의미합니다. EntityManager에는 em.find()와 em.getReference()..
[디자인패턴] 스테이트 패턴(State Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 스테이트 패턴이란? 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것 처럼 보입니다. 이 패턴을 사용하는 주된 목적은 상태 전이를 위한 조건 로직이 지나치게 복잡한 경우 이를 해소하는 것 입니다. 즉, 각 상태에 대응하는 별도의 클래스를 만들고 상태전이 로직을 그 클래스들로 옮기는 작업을 뜻합니다. 💡 상태 전이 로직이란? 객체의 상태와 이들 간의 전이 방법을 제어하는 것으로 클래스 내부 여기저기에 흩어져 존재하는 경향이 있습니다. 스테이트 패턴의 장점은? - if / else / switch를 ..
[디자인패턴] 전략 패턴(Strategy Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 전략 패턴이란? - 옵션들마다의 행동들을 모듈화해서 독립적이고 상호 교체 가능하게 만드는 것입니다. - 객체들이 할 수 있는 동작을 각각의 전략으로 만들어 놓고 동적으로 동작을 변경해야 한다면 전략만 변경하여 동작이 바뀌도록 하는 패턴입니다. - 일반적으로 if else로 구성된 코드 블록이 비슷한 기능 혹은 비슷한 알고리즘을 수행하는 경우에 전략 패턴을 적용함으로써 코드를 확장시킬 수 있습니다. 전략 패턴의 장점은? - Strategy는 파싱 클래싱의 좋은 대안입니다. 클래스를 상속하고 메소드를 오버라이딩 하는 대신 단순한 인터페이스를 구현만 하면 됩니다. - Stra..
[디자인패턴] 싱글턴 패턴(Singleton Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 싱글턴 패턴이란? 어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인입니다. 싱글턴 패턴의 장점은? 고정 된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지 할 수 있습니다. 싱글턴으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽습니다. 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶을 경우 사용합니다. 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아지는 장점이 있습니다. 싱글턴 패턴의 ..
[디자인패턴] 디자인 패턴 (Design Pattern) 종류 💡 코드가 보이지 않으시다면 드래그 해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 디자인 패턴은 봐도봐도 익숙치 않아 공부를 하며 정리를 해야겠다고 생각했습니다. 😂 디자인 패턴 (Design Pattern) 이란? - 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용을 할 수 있는 훌륭한 해결책입니다. 디자인 패턴의 종류는? 생성 패턴 - 객체 생성에 관련된 패턴 - 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공 구조 패턴 - 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 ex) 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운..
[JPA] 상속관계 매핑 (조인 전략, 단일테이블 전략, 구현클래스마다 테이블 전략) 안녕하세요! 키크니 개발자 입니다. 🦒 오늘은 상속관계 매핑에 대해서 알게 되어서 정리해보았습니다. 항상 JPA는 @ManyToOne, @OneToMany으로 연관관계만 알고있었는데 상속관계에 대해서도 매핑을 할 수 있다는 점을 처음알게되었습니다. 상속관계에서의 매핑은? - 관계형 데이터베이스는 상속 관계가 없습니다. - 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다고 볼 수 있습니다. - 상속관계 매핑은 객체의 상속과 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑합니다. - 크게는 조인 전략, 단일테이블 전략, 구현클래스마다 테이블 전략으로 볼 수 있습니다. 슈퍼타입, 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 - 각각 테이블로 변환 -> 조인 전략 - 통합 테이블로 변환 ..