본문 바로가기

분류 전체보기

Advice를 이용한 예외 처리 - IdAlreadyExistExceptionpublic class IdAlreadyExistingException extends RuntimeException { public IdAlreadyExistingException(String userId){ super("user id \""+userId+"\" is already exist"); } } - UserExceptionAdvice@ControllerAdvice public class UsersExceptionAdvice { @ResponseBody @ExceptionHandler(IdAlreadyExistingException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) String idAlreadyExist..
spring data jpa에서 enum 사용 방법 엔티티 클래스 중, Enum 값을 가지는 필드에 @Enumerated 를 붙여준다.@Enumerated에는 EnumType.STRING 혹은 EnumType.ORDINAL을 인자로 전달할 수 있다.둘의 차이는 다음과 같다. @Enumerated(EnumType.STRING) Rating rating the value of rating.name() is written and read from the corresponding database column; e.g. G, PG, PG13 @Enumerated(EnumType.ORDINAL) Rating rating the value of rating.ordinal() is written and read from the corresponding database ..
No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call 1. 원인db에서 delete를 수행하는 부분에서 발생한 에러다.검색 결과 다음과 같은 내용을 찾아볼 수 있었다The @PersistenceContext annotation has an optional attribute type, which defaults to PersistenceContextType.TRANSACTION. This default is what you need to receive a shared EntityManager proxy. The alternative, PersistenceContextType.EXTENDED, is a completely different affair: This results in a so-called extended EntityManager, which is..
MySQL 날짜, 시간 관련 내용 정리 1. 날짜 및 시간 자료형자료형 범위 DATE 0000-00-00 ~ 9999-12-31 DATETIME 0000-00-00 00:00:00 ~ 9999-12-31 23:59:59 TIMESTAMP 1970-01-01 00:00:00 이후로 지난 초 TIME -838:59:59 ~ 838:59:59 YEAR 1901 ~ 2155 [tip] DATETIME vs TIMESTAMP- 공통점 : 저장 가능 데이터 형식 YYYY-MM-DD HH:MM:SS[.fraction] (fraction은 소수점 이하 초로, 소수점 6자리까지 가능)- 차이점 :- DATETIME : 입력되는 날짜와 시간을 그대로 저장(TIME_ZONE 개념 없음)- TIMESTAMP : TIME_ZONE값을 기본으로 하여 날짜와 시간정보를..
The server time zone value '´ëÇѹα¹ Ç¥ÁؽÃ' is unrecognized or represents more than one time zone. 1. 증상spring boot와 MySql 연동 중 발생한 에러 2. 원인검색 결과 KST Time zone을 인식하지 못하는 것 같다.mysql에 시간이 SYSTIME으로 설정되어 있는데, SYSTIME이 UTC time이 아니라서 그런 것으로 보인다. 3. 해결책 spring.datasource.url=dburl?serverTimezone=UTCjdbc 설정에서 server time zone을 UTC로 설정해 주면 된다.
DECODE, CASE WHEN DECODE, CASE WHEN 둘 다 조건에 해당하는 값을 얻고자 할 때 사용(switch case 문 같은 기능) DECODEDECODE(expr, cond1, val1, cond2, val2 ..., default_val)SELECT DEPTNO, DECODE(DEPTNO, 10, 'ACCOUNTING', 20, 'RESEARCH', 30, 'SALES', 'NO_DEPT') DEPTNAMEFROM DEPT; CASE ~ WHEN ~ ENDCASE expr WHEN cond1 THEN val1WHEN cond2 THEN val2ELSE default_valENDSELECT DEPTNO,CASE DEPTNO WHEN 10 THEN 'ACCOUNTING'WHEN 20 THEN 'RESEARCH'WHEN..
Row chaining, Row migration Row chaining- Row에 저장된 데이터의 크기가 너무 커서, 하나의 블록에 다 담지 못하고 두 개 이상의 데이터 블록에 저장되는 것 Row migration- 수정한 데이터를 원래 블록에 저장하지 못하고 다른 블록에 저장하는 것 [참조]Row Chaining & Row Migration : https://tocsg.tistory.com/51
Rest API에서 로그인 구현 REST API에서는 서버가 session을 가지지 않습니다. 물론 REST API서버에도 session을 추가하여 사용할 수 있지만 이는 REST가 지향하는 바가 아닙니다. 대신 REST API는 토큰(token) 인증방식을 사용하게 됩니다.로그인 API로 아이디와 패스워드가 일치함이 확인되면 서버는 토큰을 발행하고, 로그인 후 이용가능한 API들에는 유효한 토큰이 있는 경우에만 사용할 수 있게 됩니다. 이때 토큰은 당연하게도 위조하기가 어려워야 하며 사용자를 인식할 수 있는 정보가 들어있어야 합니다. 이 포스팅에서는 JWT(JSON Web Token, http://jwt.io) package를 사용해서 토큰을 생성하고 확인하겠습니다. [출처] https://www.a-mean-blog.com/ko/b..