라벨이 Spring인 게시물 표시

[MySql] 연결 문자열에서 타임존 설정

  Spring MVC 작업 중 아래와 같은 에러가 발생했습니다. CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The server time zone value    context-datasource.xml에 연결 문자열에 serverTimezone을 설정하라고 스택오버플로우에서 말하더군요. 문제는 timezone을 뭐로 설정해야하는가? 였습니다.   우선 첫 번째로, 서버에서 사용중인 타임존을 알아야겠죠? SELECT @@global.time_zone, @@session.time_zone;   위와 같이 쿼리를 날렸더니, 둘 다 SYSTEM이란 답만 돌아왔습니다. 그래서 아래와 같이 해봤습니다. SELECT timediff(curtime(), utc_time());   결과는 09:00:00 였습니다. 서울이죠. 그래서 serverTimezone=Seoul 이라고 했더니 안 되더라고요. 구글로 검색해본 결과 앞에 대륙명까지 적어야 한다는 것을 깨달았습니다. 참고: 위키피디아   serverTimezone=Asia/Seoul 로 설정하니 정상 작동되는 것을 확인했습니다.

[IntelliJ] Spring 재시작 없이 리로드(Hot-swap)하기!

스프링 핫스왑   IntelliJ를 사용하면서 불편한 점이 하나 있었습니다. 방금 전까지요. 바로 js, css, html, jsp 등등 정적 리소스는 수정하고 On Frame Deactivation 이벤트에 지정한 대로 자동으로 리로드가 되는데, Controller, Service, Repository, Mapper 등등은 알아서 리로드가 되지 않는 것이었죠.   근데, 제가 회사에서 일 할 때의 기억으론 이클립스 사용시 컨트롤러 역시 핫스왑이 되었던 것 같은데, 왜 IntelliJ에선 안 되지? 하고 생각하게 되었습니다. 얼마 지나지 않아, 안 되는 게 아니라 못 찾은 것 뿐일 거라는 생각이 들어 찾아봤습니다.   역시 답은 금방 나오더군요. 컨트롤러, 리포지토리, 서비스 모두 핫스왑!   방법은 Maven과 Gradle이 다릅니다. 따지고 들어가 보면 같은 원리긴 하지만... 아무튼 설명 들어갑니다.   메이븐 사용시: <plugin> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-maven-plugin </artifactId> <dependencies> <dependency> <groupId> org.springframework </groupId> <artifactId> springloaded </artifactId> <version> 1.2.6.RELEASE </version> </dependency> </dependencies> </plugin>   그래들 사용시: ...

[Spring MVC RESTful] RESTful URL패턴 사용하며 css, js, img 등 리소스는 default 서블릿에 할당하는 방법

  Spring RESTful을 사용하기 위해 을 / 로 지정하고 다 잘 돌아가는 듯 싶었으나 /css, /js, /img 디렉터리에서 로딩을 하지 못 한다면? 하나하나  @RequestMapping 으로 지정하는 것도 방법이 될 수 있겠으나, 더 간단하게 web.xml에서 해결하는 방법이 있었다. <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/spring/context-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>...

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

  안녕하세요? 혼살입니다. 블로그에 정말 오랜만에 글을 씁니다. 일하고 겜하고 일하고 겜하고 집에 박혀서 매일 똑같은 일상을 보내다 보니 블로그에 글을 오랫동안 안 쓰고 있었네요. 대부분 근황은 유튜브 동영상으로 대체하다 보니 더욱 더 그랬던 것 같습니다.   하지만 이번엔 영상보다 글로 남기는 게 더 유익할 것 같아 간만에 글을 쓰게 되었습니다. 바로 MySQL Data Types & Java Data Types 매칭! 현재 진행중인 외주 작업 중 SET 타입을 Java에선 어떻게 처리하나 찾아보다가 잘 정리된 블로그 글 을 발견해 나중에 손쉽게 찾기 위해 제 블로그에도 씁니다. 위 링크에 들어가시면 테이블로 잘 정리돼 있으니 한 번 들어가 보시는것도 괜찮겠네요. 왼쪽은 MySQL, 오른쪽은 Java의 데이터 타입입니다. BIT Boolean TINYINT Integer BOOL/BOOLEAN (TINYINT(1)) Integer SMALLINT Unsigned 상관없이 Integer MEDIUMINT Integer, Unsinged라면 Long INT Integer, Unsigned라면 Long BIGINT Long, Unsigned라면 java.math.BigInteger FLOAT Float DOUBLE Double DECIMAL java.math.BigDecimal DATE java.sql.Date DATETIME java.sql.Timestamp TIMESTAMP java.sql.Timestamp TIME java.sql.Timestamp YEAR yearsIsDateType이 설정됐다면 java.sql.Date, 아니라면 Short CHAR 컬럼이 Binary로 설정되지 않았다면 String, 돼 있다면 byte[] VARCHAR CHAR와 동일 BINARY byte[] VARBINARY byte[] TINYBLOB byte[] TINYTEX...