개발공부 (29) 썸네일형 리스트형 [디자인패턴] 템플릿 메소드 패턴(Template Method Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 김영한님 강의인 스프링 핵심원리 - 고급편을 보면서 템플릿 메소드 패턴에 대해 다시 복습하고자 '얄팍한 코딩사전 : 객체지향 디자인패턴 2'을 참고하였습니다. 템플릿 메소드 패턴이란? 어떤 같은 형식을 지닌 특정 작업들의 세부 방식을 다양하고자 할 때 사용하는 패턴입니다. 변하지 않는 것은 추상클래스의 메서드로 서언하고, 변하는 부분은 추상 메서드로 선언하여 자식 클래스가 오버라이딩 하도록 처리합니다. 이렇듯 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바뀌지 않으면서, 특정 단계에서는 수행하는 내용을 바꾸는 패턴입니다. 예를 들어 대대로 전통.. [Spring] @Transactional이 2개라고? 일단 그게 뭔데? 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 레거시 프로젝트를 버전 업을 하는 도중 @Transactional이 import 방법이 2가지가 있다는 것을 알았습니다. 당연하게 써오던 것이었는데 두 가지의 차이가 무엇인지 궁금하여 알아보았습니다. 😅 Transactional이 무엇인데? 우선 여기서 말하는 트랜잭션은 데이터베이스 관리 시스템이나 유사한 시스템에서 상호작용 단위라고 할 수 있습니다. 그리고 이 상호작용 단위는 더 이상 쪼개질 수 없는 최소의 연산을 의미합니다. 트랜잭션은 ACID 원칙을 갖고 있습니다. ACID원칙이란? 더보기 원자성(Atomicity) : 트랜잭션은 분리할 수 없는 하나의 단위입니다... [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로 인스턴스를 사용하기 때문에 메모리 낭비를 방지 할 수 있습니다. 싱글턴으로 만들어진 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽습니다. 인스턴스가 절대적으로 한 개만 존재하는 것을 보증하고 싶을 경우 사용합니다. 두 번째 이용시 부터는 객체 로딩 시간이 줄어 성능이 좋아지는 장점이 있습니다. 싱글턴 패턴의 .. 이전 1 2 3 4 다음