분류 전체보기
-
Java - Overloading & OverridingLanguage/Java 2022. 3. 23. 17:55
Overloading (오버로딩) 메서드 시그니처(Method Signature) 메서드 오버로딩의 핵심은 메서드 시그니처에 있다. 메서드 시그니처란 메서드의 선언부에 명시되어 있는 매개변수의 리스트를 말한다. 두 개의 메서드는 다음 조건을 만족하면 같은 시그니처를 가진다고 할 수 있다. 1. 메서드의 이름 2. 매개변수의 수 3. 매개변수 타입의 순서 여기서 중요한 점은 리턴 타입이 메서드 시그니처에 포함되지 않는다는 점이다. public class Test { /** 기준이 되는 메서드 */ public int method(int x, int y) { return x + y; } /** 메서드 정의 가능 */ public int method(int x) { return x; } /** 메서드 정의 가..
-
Spring Boot - @ModelAttribute의 사용방법 및 주의사항Framework & Library/Spring Boot 2022. 3. 23. 11:44
@ModelAttribute @ModelAttribute란? Spring 프레임워크 환경에서 Request Parameter를 얻기 위해 "@ModelAttribute" 애너테이션을 자주 사용한다. 해당 애너테이션은 파라미터로 넘어온 값을 바인딩하여 개발자가 원하는 객체로 변환해주는 역할을 수행한다. 문제 상황 @Getter public class Person { private String name; private Long age; } 값을 바인딩하기 위한 객체인 Person 클래스는 name과 age 필드 두 가지를 가지고 있다. @RequestMapping(value = "/getPerson.do", method = RequestMethod.GET) public String reqUrl(@ModelA..
-
Java - Checked Exception & Unchecked ExceptionLanguage/Java 2022. 3. 22. 15:09
예외(Exception)와 에러(Error) 예외(Exception)란? 프로그래밍에서 예외란 입력 값에 대한 처리가 불가능하거나, 프로그램 실행 중에 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름에 어긋나는 경우를 말한다. 그리고 Java에서 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링할 수 있다. 에러(Error)란? 에러는 시스템에 무엇인가 비정상적인 상황이 발생한 경우를 말한다. 주로 JVM에서 발생하는 것이며, 예외와 반대로 이를 애플리케이션 코드에서 잡을 수 없다. 에러의 예시로는 OutOfMemoryError, ThreadDeath, StackOverflowError 등이 있다. 예외 구분 예외는 위 그림과 같이 Checked Exception과 Un..
-
MyBatis - ${}와 #{}의 차이Database/MyBatis 2022. 3. 22. 12:39
검색 유형에 따른 코드의 구성 #{}를 사용한 기존 코드 SELECT FROM TBL_XBR_IDX_CALC WHERE INDX_SEQ LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE INDX_NM LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE CACL_ORD LIKE '%' || #{searchKeyword} || '%' ORDER BY INDX_SEQ, CACL_ORD SELECT FROM TBL_XBR_IDX_CALC WHERE TRGT_ELM..
-
Java - 직렬화(Serialization)와 역직렬화(Deserialization)Language/Java 2022. 3. 21. 17:48
데이터 직렬화와 역직렬화 데이터 직렬화와 역직렬화란? 데이터 직렬화 : 메모리의 데이터를 디스크에 저장하거나, 네트워크 통신에 사용하기 위한 형식으로 변환하는 것이다. 데이터 역직렬화 : 디스크에 저장한 데이터를 읽거나 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것이다. 데이터를 저장하거나 통신하기 위해 직렬화 과정을 거치는 것은 알겠는데, 왜 데이터를 그냥 사용하지 않고 이러한 과정을 거치는 것일까? 직렬화가 필요한 이유 어떠한 개발 언어를 사용하던지 간에 사용하는 데이터는 다음과 같이 크게 두 가지로 나뉜다. 값 형식 데이터 : int, float, char 등 값 형식 데이터는 Stack에 메모리가 쌓이고 직접 접근이 가능하다. 참조 형식 데이터 : 객체와 같은 참조 형식 변수..
-
MyBatis - <choose>, <when>, <otherwise> 태그Database/MyBatis 2022. 3. 21. 15:30
, , 태그 , , 의 이해 태그의 경우 조건식이 참인 모든 태그 내 쿼리문이 실행된다. 반면에, 태그 같은 경우 조건식이 참인 태그를 찾으면 해당 태그의 쿼리문만 실행한다. 다시 말해 조건식을 가진 여러 개의 태그 중 오로지 한 개의 태그 내 쿼리문을 실행하는 것이다. 대부분의 프로그래밍 언어에서 사용되는 if-else if 절과 비슷한 역할을 수행한다. 쿼리문01 쿼리문02 쿼리문03 쿼리문04 쿼리문05 태그 안에서 태그와 를 작성한다. 태그는 각각 test 속성을 가지며 해당 속성 안에 조건식을 작성한다. 태그가 실행되면 태그의 조건식을 순서대로 확인하여 참을 반환하는 태그 내 쿼리문을 실행하게 된다. 만약 태그의 조건식 중 참을 반환하는 것이 없을 경우 태그 내에 작성된 쿼리문이 실행된다. 추가..