본문 바로가기

1. JDBC-8056 invalid number of columns in query 상황 : 이 문제는 2개의 SELECT문을 UNION ALL하였을때 발생한다. 원인: SELECT절에 원인이 존재하는데, UNION ALL을 하는 테이블들끼리의 COLUMN의 갯수가 맞지 않았다. 해결: 컬럼의 갯수를 맞춰져야 하고, 컬럼의 타입 또한 맞춰져야 한다. 즉, VARCHAR은 VARCHAR로 컬럼의 타입을 맞춰야 한다. 결론 UNION ALL 할때는 꼭 컬럼의 갯수와 타입을 맞춰야 한다.
취지 개발을 하다보면 수많은 Error에 직면한다. 한번 실수했던걸 다시는 똑같은 실수를 하지 않기 위해서. 해당 내용들을 정리해본다.
Java Volatile은 무엇이고 왜 필요할까? Java Volatile이란? volatile keyword는 Java 변수를 Main Memory에 저장하겠다라는 것을 명시하는 것이다. 그러므로 매번 Read/Write 작업을 할때 CPU Cache에 값을 저장하거나 읽는것을 넘어서 Main Memory영역까지 저장하고 읽는것을 의미한다. 그렇다면 왜 필요할까? 위의 그림을 자세히 살펴보자. CPU는 중간에 Cache Memory를 경우하고 Main Memory에 접근한다. 왜 그럴까? volatile 변수를 사용하고 있지 않는 MultiThread 어플리케이션에서는 Task를 수행하는 동안 성능 향상을 위해 Main Memory에서 읽은 변수 값을 CPU Cache에 저장하게 됩니다. 만약에 Multi Thread환경에서 Thread가 변수 값을 ..
예외 처리 @ControllerAdvice Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은양의 코드를 작성해야 하지만, AOP 방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리하는 방식입니다.
4. 전략 패턴 전략 패턴이란? 위키피디아에서는 전략 패턴을 다음과 같이 설명하고 있다. 전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다 전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다 유연하고 재사용 가능한 객체 지향 소프트웨어를 어떻게 설계하는지 기술하기 위해 디자인 패턴의 개념을 보급시킨 디자인 패턴(Gamma 등)이라는 영향력 있는 책에 포함된 패턴들 가운데 하나 전략패턴이란 특정 컨텍스트에서 알고리즘을 별도로 분리하는 설계 방법을 의미합니다. 다음으로 예시를 한번 살펴보겠습..
@RestController와 @ResponseBody의 상관관계 HTTP 통신 HTTP통신은 Header와 Body로 정보를 주고 받으면 통신을 한다. 여기서 ResponseBody란 Body에 해당 정보를 넣어서 응답을 하겠다는 의미이다. 현재는 주로 JSON Format을 활용한 방식이 주가 되었다. Spring MVC 흐름 @RestContoller를 설명하기전에 스프링에서 데이터가 송수신되는 과정을 살펴보자. 1. 클라이언트는 웹서버에 요청을 보내게 된다. 2. Dispatcher Servlet을 Front controller로써, 그 요청을 받게되고 요청을 처리할 Hanlder Mapping을 찾게 된다. 3. Hadler Mapping을 찾고, Handler Mapping에 의해 적합한 Controller을 찾고 Controller은 작업후 결과를 반환하게..
enum과 활용사례 enum이란? Enum이란 Enumeration의 앞 글자로 열거라는 의미를 갖는다. 관련이 있는 상수들의 집합 어떤 클래스가 상수만으로 작성되어 있으면 반드시 class로 선언할 필요는 없습니다. 이럴 때 class로 선언된 부분에 enum이라고 선언하면 이 객체는 상수의 집합이다. 라는 것을 명시적으로 나타냄 활용사례 1 CODE용 테이블 대체 개발을 진행하다 보면 코드용으로 테이블을 만들어야 하는 경우가 생깁니다. 예를 들면, 입금 여부를 나타낼때 1번은 입금, 2번은 출금이라고 할때 해당 내용을 저장할 테이블이 필요합니다. 위와 같은 테이블이 필요하다는 이야기이고, 실제로 위와 같은 코드성 테이블을 만들고 코드를 관리할 경우 다음과 같은 문제에 마주칩니다. 문제점 1 다른 테이블에는 코드인 1 아..
접근제어자 private, public, protected 등의 접근제어자에 대해 알아보자. 자바는 크게 4가지의 접근 제어자로 나눌수 있다. private public protected default 많은 사람들이 default 접근 제어자에 대해서 잘 모르는 경우가 많다. 이번에 확실하게 알아보자. private 접근제어자가 private으로 설정되었다면 private 이 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능하다. public class Sample { private String secret; private String getSecret() { return this.secret; } } 위 예제의 secret 변수와 getSecret 메소드는 오직 Sample 클래스에서만 접근이 가능하고 다른 클..