본문 바로가기

Total220

Lombok @Builder 사용시 기본값 지정하기 Lombok이 무엇인지 간단히 살펴보고 넘어가자. 어떻게 프로젝트에 적용하는지는 언급하지 않는다. 검색을 통해서 알아보자. 가장 기본적인 기능으로 Lombok은 getter/setter method를 만들어 준다. 예를 들어 아래와 같이 User라는 모델 객체가 있다고 가정하자. public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } @.. 2017. 4. 12.
MySQL에서 문자열 검색시 대소문자 처리 MySQL에서 select 쿼리 수행시 신기(?)한 부분을 발견해서 정리해 본다. 들어가며... (Ver. 5.6) MySQL에서 테이블명 또는 컬럼명에서는 대소문자를 구별한다는 것은 잘 알려진 사실이다. 그 이유는 테이블 또는 컬럼명이 파일로 관리되기 때문인데, 윈도우에서는 이슈가 없으나 Unix 계열에서는 대소문자 구분이 필요하기 때문이다. 그렇다면 문자열 컬럼(VARCHAR, CHAR, TEXT 등)에 저장된 내용은 어떻게 될까? 문자열 컬럼에서 대소문자 처리 아래와 같이 id, name 컬럼을 가진 user 테이블이 있다고 가정하자. CREATE TABLE `user` ( `id` varchar(20)DEFAULT NULL, `name` varchar(100) DEFAULT NULL, PRIMAR.. 2017. 4. 4.
Transaction 내에서 ExecutorType 변경 불가 오류 Spring-Batch로 개발을 진행하던 중 아래와 같은 오류를 접하였다. org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 현상은 "Transaction내에서 ExecutorType이 변경될 수 없다” 이다. 위 현상은 Batch 처리를 할 때 발생할 수 있다. 그 이유는 아래와 같다. MybatisPagingItemReader를 사용하면 내부적으로 SqlSessionTemplate이 생성될 때 ExecutorType.BATCH로 지정된다. 만약 MybatisPagingItemReader에서 다른 쿼리를 날려보고자 한다면.. 2017. 3. 15.
[코딩도장] 아마존 입사문제 아마존 면접 문제로 알려진 “그 시간 사무실에 몇 명이 있었나?”를 풀어보았습니다. 문제는 아래와 같습니다. A 사무실에 특정일자의 출퇴근 시간이 기록된 거대한 로그파일이 있다고 한다. 파일의 형식은 다음과 같다.(한 라인에서 앞 부분은 출근시간(HH:MM:SS), 뒷 부분은 퇴근시간이다) 09:12:23 11:14:35 10:34:01 13:23:40 10:34:31 11:20:10 특정 시간을 입력(예: 11:05:20)으로 주었을 때 그 시간에 총 몇 명이 사무실에 있었는지 알려주는 함수를 작성하시오. 기본적으로 두 가지 가정하에 문제를 접근해 보았습니다. 로그 파일에 출근시간은 정렬이 되어 있다. 자정을 넘기지 않고 당일날 퇴근한다. 1번의 경우 가정하지 않더라도 정렬 작업을 수행하면 되지만, 2.. 2017. 2. 4.