[MySQL/MariaDB] 동일한 데이터가 없을 경우는 INSERT, 있을 경우에는 UPDATE (ON DUPLICATE KEY – 오라클의 MERGE INTO 같은)

By | 8월 16, 2021

Oracle의 MERGE INTO 문의 경우 동일 데이터에 대한 판단 기준을 개발자가 쿼리에 명시하는 데 반해, MySQL 계열에서는 조건을 따로 받지 않고 Unique Index를 사용하는 것 같다. (추측임) INSERT INTO tb_sample ( col1 , col2 , col3 ) VALUES ( 'AAA' , 'BBB' , 'CCC' ) ON DUPLICATE KEY UPDATE col2 = 'XXX', col3 = 'YYY'… Read More »

Spring @Scheduled 스케쥴러 사용 샘플 (cron 표현식 등)

By | 8월 11, 2021

Spring Boot 라면 @EnableScheduling 을 붙여서 기본 셋팅이 가능한 것 같은데, 일반 Spring 에서는 아래와 같은 셋팅을 추가해 주어야 한다. thread pooling 관련 설정을 하기도 하는 것 같은데, 여기서는 가장 심플한 구성을 사용하기로 한다. spring context xml (‘task’ 가 포인트) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!–… Read More »

비밀번호(패스워드, password) 정규식 예시 (정규표현식, regex, 글자 수 제한 포함)

By | 6월 26, 2023

public static final String REGEX_USER_ID = "^(?=.*[a-zA-z])(?=.*[0-9])(?!.*[^a-zA-z0-9]).{5,20}$"; // 정규식 패턴 (사용자 ID – 영문자/숫자 포함 5~20자) public static final String REGEX_USER_PW = "^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[`~!@$!%*#^?&\\(\\)\\-_=+])(?!.*[^a-zA-z0-9`~!@$!%*#^?&\\(\\)\\-_=+]).{8,16}$"; // 정규식 패턴 (사용자 PW – 영문자/숫자/특수문자 포함 8~16자) java 기준이므로 타 언어는 다를 수 있음 (escape character 라던가..)

DBeaver에서 구버전의 오라클(Oracle 9.2.0.7.0) 접속 후, 좌측 database navigator에서 더블클릭으로 object 조회를 했을 때 ora-01460 오류가 발생하여 해결했던 사례.

By | 7월 26, 2021

검색을 해 보니 이 문제는 오라클 드라이버의 버전이 맞지 않아서 생기는 것이라 한다. 이 경우도 마찬가지로 드라이버가 너무 최신이어서 문제가 되었던 것. 아래와 같은 과정으로 해결이 되었다. (1) 이 훌륭한 분의 블로그 에서 호환 드라이버 버전을 확인. (2) 오라클 사의 웹페이지에서 구버전 드라이버를 찾을 수가 없어서 oracle instant client를 다운로드 받았다. (오라클 웹계정 필요) 정확히… Read More »

IntelliJ 에서 다수의 프로젝트에서 공통 프로젝트 하나를 각각 모듈로 추가하여 참조할 때 발생했던 이상 상황.

By | 7월 14, 2021

project A, project B 가 있고, commmon module용 project C가 있다고 할 때, A에서 C를 import module 하고(as maven project) 빌드까지 성공한 후, B에서 C를 import module 하면, 아까 A에서 C가 빠져버리는 현상이 있었다. 다시 A에서 C를 import module 하면, 또 B에 잘 셋팅되어 있던 C가 빠져버리는 무한 반복에 빠지게 되었는데… 삽질하다가 시도해 본 것이,… Read More »

[java] 문자열 리스트(List) 중복(dup, duplicate) 체크(check)

By | 7월 5, 2021

/** * 매개변수로 받은 문자열 list에 중복이 존재할 경우 true, 아니면 false 리턴 * * @param list * @return */ public static boolean hasDuplicated(List<String> list) { if(list == null){ return false; } Set<String> set = new HashSet<>(list); if(set.size() < list.size()){ return true; } return false; } 참고 https://stackoverflow.com/questions/562894/java-detect-duplicates-in-arraylist

log4j2 에서 특정 문자열이 존재하는 로그의 행(row)을 정규식(regex)로 출력에서 제거하기

By | 6월 30, 2021

<Appenders> <Console name="console" target="SYSTEM_OUT"> … <RegexFilter regex=".*==>\s*(Preparing|Parameters).*" onMatch="DENY" onMismatch="ACCEPT"/> …. </Console> </Appenders> 위 샘플은 org.apache.ibatis.plugin.Intercepts 를 사용하여 parameter bound query log 를 출력시, 기존에 출력해 주던 쿼리 로그가 필요 없어져서 (preparing statement, parameter 등) 해당 부분을 출력에서 제외하는 예제임. <RegexFilter /> 를 하나 더 선언해 봤는데, 처음에 선언한 것만 작동하는 느낌이었음.

json 출력 혹은 swagger 문서에서 VO객체의 일부 필드(멤버) 숨기기 (Spring 4, jackson2, springfox 2.9 환경)

By | 6월 30, 2021

@ApiModelProperty(notes = "책 썸네일 atchFileId", hidden = true) @JsonIgnore private String bookThumbnailFileId; swagger의 모델 정의에서 필드 숨기기 @ApiModelProperty를 아예 필드에 붙이지 않는다. 모종의 이유로 붙였을 경우에는 @ApiModelProperty(hidden = true)를 사용한다. json response 에서 필드 숨기기 @JsonIgnore 를 사용한다. @JsonIgnore는 꼭 com.fasterxml.jackson.annotation.JsonIgnore 을 사용해야 한다. (java 패키지 확인)