Mybatis Mybaits는 자바 Object와 SQL 사이를 자동으로 매핑해주는 기능을 지원하는 영속성(Persistence) 프레임워크이다. Mybatis의 장점 1. 쉬운 접근성과 코드의 간결함 - jdbc의 모든기능을 Mybattis가 제공하고 있기에 복잡한 jdbc코드를 걷어내고 깔끔한 소스코드를 유지할 수 있다. - 간단한 persistence framwork. 배우기가 쉽다. - 생산성 : 62%정도 줄어드는 코드, 간단한 설정 2. 성능과 생산성 - sql에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일할 필요가 없다. - 성능 : 데이터 접근 속도를 높여주는 Join 매핑(구조적 강점) , SQL를 직접작성하므로 최적화된 쿼리 구현가능 - 엔터티에 종속받지 않고 다양한 테이블을 조합..
우선 시맨틱하게 HTML을 짜야하는 이유에 대해서 알아보자. 이를 위해서 시맨틱 웹의 목적과 사용이유를 짚고넘어가면 검색사이트들은 웹사이트를 검색하기 위해 검색엔진을 사용한다 이때 개발자들은 프로적트를 만들때 검색어에 많은 노출을 할 수 있어야하기 때문에 검색엔진 최적화(SEO :Search Engine Optimization)을 고려해줘야한다. 즉, 검색엔진에 잘 노출 되려면 시멘틱 웹을 따라야 한다는 뜻이기도하다. 그렇다면 계속 시멘틱 시멘특 거리는데 이 시멘틱이란 의미는 무엇인가? Semantics(의미론) 이라는 영어단어에서 알 수 있듯이 HTML 문서를 의미에 맞도록 작성하는 것을 Semantic HTML이라고 부르는 것이다. HTML에는 정답이 없기에 HTML을 각 요소의 의미에 맞게 HTML..
SQL에서 INESERT문을 작성할 때 해당 테이블에 특정 데이터가 없을 때에만 값을 집어넣는 쿼리문을 짜야할 때가 있다. 이때 자연스럽게 작성되는 문장으로 INSERT INTO TBL(col1, col2, col3) VALUSE(col1val, col2val, col3val) WHERE NOT EXISTS SELECT(없어야 할 데이터값 조회 조건) 뭐이런식으로 작성할 수 있는데 이때 VALUES를 지원하지 않는 문제가 있는것 같다. SQL - 더미 테이블 DUAL DUAL이라는 더미 테이블 즉, 가상의 테이블을 통해서 함수에 대한 쓰임을 알고 싶은데 특정 테이블을 생성하기 귀찮은 경우가 있는데 이때 DUAL테이블을 이용할 수도 있고 이 포스팅에서는 INSERT문에서 VALUES 대신에 사용하기도 한다..
프로젝트를 진행하다보면 일정시간마다 작동해야하는 서비스가 존재할 수 있다. 처음에는 어떻게 구현해야할지 몰라서 스레드를 통해서 구현할까 생각도 했었는데 스레드를 사용하게되면 스레드에서 원하는 시간조건을 sleep 통해 걸어줘야하고 조건을 걸기가 좀 귀찮은 측면이 존재한다. 하지만 스프링에서 지원하는 scheduler를 사용하면 간편하게 구현할 수 있다. 시간조건 또한 Cron 표현식을 통해서 어렵지 않게 작성할 수 있다. 이를 사용하기위해선 servlet.xml 설정을 해야하는데 이는 생략한다. 클래스파일을 등록하는 것은 간단하다. 클래스에 @Component 어노테이션을 달아주고 메소드 앞에 스케쥴 어노테이션을 작성해주면된다. @Component public class Scheduler { /** * ..
POST sec/_delete_by_query { "size": 1, "query": { "range": { "systemtime": { "from": null, "to": "2022-01-16 00:00:00", "include_lower": true, "include_upper": true, "format": "yyyy-MM-dd HH:mm:ss", "boost": 1 } } }, "_source": false } 결과 이렇듯 ElasticSearch에서는 delete 쿼리를 날릴때 size가 설정되어있다고하여 size 개수만큼만 삭제되는게 아니다. size는 무시해도된다.
get 요청에서 _mapping 명령어 사용시 각 필드의 데이터 타입이 무엇인지 확인 할 수 있다. GET camo_system_logs/_mapping { } { "camo_system_logs" : { "mappings" : { "properties" : { "cluster" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "cpu_usage_per" : { "type" : "float" }, "disk_total" : { "type" : "long" }, "disk_usage" : { "type" : "long" }, "host" : { "type" : "text", "fiel..
ElasticSearch를 이용하다보면 가끔씩 필드 속성제한을 해제할 필요가 있다. 그럴때 아래와 같은 명령어를 통해서 설정할 수 있다. PUT test_index/_settings { "index.mapping.total_fields.limit": 2000 } 그리고 Aggreagation 의 요청 처리속도는 size 설정이 영향을 미치지 않는다. "query": { "bool": { "must": [ { "range": { "systemtime.keyword": { "from": "2022-02-25 00:00:00", "to": null, "include_lower": true, "include_upper": true, "format": "yyyy-MM-dd HH:mm:ss", "boost": 1 ..