문제
Article의 cdt 컬럼(datetime)에 해당하는 도메인 객체의 필드는 어떤 타입으로 지정해야 할까? 다시 말해, 컬럼의 타입이 datetime일 때는 해당 도메인 객체의 타입을 어떻게 지정하는 것이 좋을까? java.sql.Date
의 경우 시간 정보가 저장되지 않는다. Java.sql.Time
의 경우 날짜 정보가 저장되지 않는다. java.lang.String
의 경우 잘못된 형식의 날짜 데이터가 들어갈 가능성이 있다.
해결방법
mysql의 datetime 타입에 해당하는 프로퍼티 타입은 java.sql.Date
를 사용하면 된다. util
패키지의 Date
도 mybatis에 전달할 때 아무런 문제가 발생하지 않는다. 내부적으로 전달할 때는 toString()
한 값이 전달되는 것이 아니라 밀리초의 long
값으로 전달되기 때문이다. java.sql.Date
은 java.util.Date
은 내부적으로 시간을 가지고 있긴 하지만(결국 long값을 가지고 있으니까) 이를 사용하지 않는다. 따라서 날짜를 다룰 때만 사용하는 것이 좋다.