본문 바로가기

전체글114

SELECT * 을 쓰면 안되는 이유 목차개요SELECT * FROM table 이 안좋은 7가지 이유2-1. 불필요한 I/O(입력 출력)2-2. 네트워크 트래픽 증가2-3. 애플리케이션 메모리 낭비2-4. ResultSet의 컬럼 순서에 의존하는 결과2-5. 테이블에 새로운 컬럼을 추가하면 뷰에 오류 발생2-6. JOIN 쿼리 충돌2-7. 테이블 간에 데이터를 복사할 때 문제 발생결론1. 개요쿼리를 조회할 경우, SELECT * FROM table 문을 자주 사용했다. * 을 이용해 모든 칼럼의 데이터를 가져오는 것 보다 필요한 칼럼을 명시해서 가져오는게 더 좋다고 키워드를 던져 주셔서 찾아 보게 되었다.2. SELECT * FROM table 이 안좋은 7가지 이유처음 SQL을 배울때 기본적으로 SELECT * FROM table과 같이.. 2023. 11. 29.
생성자주입을 선택해라! 목차개요다양한 의존성 주입방법2-1. 생성자 주입(Constructor Injection)2-2. 수정자 주입(Setter Injection)2-3. 필드 주입(Field Injection)생성자주입을 선택하는 이유3-1. 불변3-2. 누락 방지3-3. final 키워드결론1. 개요스프링에서 의존관계 주입에는 생성자 주입, 필드 주입, 수정자 주입이 존재한다.과거에는 수정자 주입과 필드 주입을 많이 사용했지만, 스프링을 비롯한 DI프레임워크 InteliJ 등등 대부분이 생성자 주입을 권장한다.왜 생성자 주입을 권장하는지 아래에서 살펴보자.2. 다양한 의존성 주입방법2-1. 생성자 주입(Constructor Injection)생성자 주입은 생성자를 통해 의존 관계를 주입하는 방법이다.@Service pub.. 2023. 11. 28.
Java 에서 싱글톤패턴 구현방식 목차개요Eager InitializationStatic Block InitializationLazy InitializationThread Safe SingletonBill Pugh Singleton ImplementaionEnum Singleton결론1. 개요싱글톤 패턴은 어떤 클래스의 인스턴스가 오직 하나만 생성되는 것을 보장하며, 이 인스턴스에 접근할 수 있는 사용할 수 있도록 제공하는 패턴이다.싱글톤 패턴을 구현하는 방법을 중점으로 해당 내용을 정리해보려고 한다.2. Eager InitializationEager Initialization은 가장 간단한 형태의 구현 방법이다. 이는 싱글톤 클래스의 인스턴스를 클래스 로딩 단계에서 생성하는 방법으로 Thread-safe하다.그러나 어플리케이션에서 해당.. 2023. 11. 24.
데코레이터패턴(__**Decorator Pattern**__)이란? 목차데코레이터패턴(Decorator Pattern)이란?데코레이터 패턴 구조패턴 적용하기장점과 단점자바와 스프링에서 찾아보는 패턴프록시 패턴과 데코레이터 패턴1. 데코레이터패턴(Decorator Pattern)이란?데코레이터 패턴(Decorator Pattern)은 대상 객체에 대한 기능 확장이나 변경이 필요할때 객체의 결합을 통해 서브클래싱 대신 쓸수 있는 유연한 대안 구조 패턴이다.데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다.2. 데코레이터 패턴 구조Component (Interface) : 원본 객체와 장식된 객체 모두를 묶는 역할ConcreteComponent : 원본 객체 (데코레이팅 할 객체)Decorator : 추상화된 장식자 클래스원본 객체를 합.. 2023. 11. 23.
프록시패턴(Proxy Pattern)이란? 목차프록시패턴(Proxy Pattern)이란?프록시 패턴 구조패턴 적용하기장점과 단점자바와 스프링에서 찾아보는 패턴1. 프록시패턴(Proxy Pattern)이란?프록시 패턴은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다.프록시를 번역하면 대리자, 대변인의 의미를 갖고 있다. 즉, 프록시에게 어떤 일을 대신 시키는 것이다.객체 지향 프로그래밍에 접목해보면 클라이언트가 대상 객체를 직접 쓰는게 아니라 중간에 프록시(대리인)을 거쳐서 쓰는 코드 패턴이라고 보면 된다. 따라서 대상 객체(Subject)의 메소드를 직접 실행하는 것이 아닌, 대상 객체에 접근하기 전에 프록시(Proxy) 객체의 메서드를 접근한 후 추가적인 로직을 처리한뒤 접근하게 된다.그냥 객체를 이용하.. 2023. 11. 22.
어댑터패턴(Adapter Pattern)이란? 목차어댑터 패턴1-1. 어댑터 패턴이 해결하는 문제1-2. 문제 해결 예제 11-3. 문제 해결 예제 2패턴 적용하기장점과단점자바와 스프링에서 찾아보는 패턴4-1. Collection 예제4-2. java.io 패키지 예제4-3. 스프링의 HandlerAdapter1. 어댑터 패턴이란?일상에서 흔히 볼 수 있는 콘센트라 보면 된다.우리가 110V 콘센트를 220V에 꽂거나, 반대로 220V 콘센트를 110V에 꽂으려고 할 때, 그 사이에 쓰는 어댑터(돼지코)를 비유하면 가장 쉽게 이해 할 수 있다.소프트웨어적으로 보면, 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴을 말한다.즉, 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다.1-1. 어댑터 패.. 2023. 11. 21.