엘라스틱서치에서 DSL이란 Domain Specific Language 으로 JSON에 기반한 질의어를 말한다. 결국 데이터베이스처럼 사용자가 원하는 데이터를 추출하기 위한 질의 언어라는 뜻이다. 엘라스틱서치에서 기본적으로 질의를 하려면 아래와 같이 "query" 속성을 사용한다. GET camo_system_logs/_search { "query": { "range": { "systemtime.keyword": { "lt": "now" } } } } Query VS Filter DSL 기능이 어떤게 있는지 설명에 앞서 query와 filter간 차이점은 다음과 같다. 기본적으로 Elastic search는 일치하는 검색 결과의 관련성을 점수 별로 정렬하여 각 문서가 쿼리와 얼마나 잘 일치하는지 측정한다..
들어가며 Mybatis는 자바 ORM(Object Relational Mapping) 프레임워크 중 하나로, SQL 쿼리문을 XML 혹은 어노테이션으로 관리하면서 자바 객체와 데이터베이스 사이의 매핑을 쉽게 도와주는 도구이다. Mybatis의 동작 원리를 단계적으로 살펴보자. 1. 설정 파일 로딩 Mybatis는 mybatis-config.xml 설정 파일을 통해 시작된다. 이 파일에서 데이터베이스 연결 정보, 트랜잭션 관리 방식, 매퍼 파일 위치 등을 설정할 수 있다. 설정 파일을 읽어들여 SqlSessionFactory를 생성하는 건데, 이 객체는 세션을 생성하는 공장 역할을 한다. 이 과정에서 Mybatis는 설정 파일의 정보를 기반으로 내부적으로 필요한 준비를 마친다고 볼 수 있다. 2. SqlS..
public String doSometing( @RequestParam("가져올 데이터의 이름") [데이터타입] [가져온데이터를 담을 변수], Model model) 위와 같은 형식으로 사용하는데 @RequestParam 어노테이션은 servlet에서 HttpServletRequest 객체와 같은 역할을 수행한다. 아래는 예시코드이다. 1 2 3 4 @RequestMapping(value = "/read", method = RequestMethod.GET) public void read(@RequestParam("bno") int bno, Model model) throws Exception { model.addAttribute(service.read(bno)); } Colored by Color Scr..
스프링MVC에서 MyBatis를 XML로 사용하여 DAO를 작성하고 Junit으로 테스트하는 과정에서 Spring - An illegal reflective access operation has occurred Illegal reflective access by org.apache.ibatis.reflection.Reflector 이러한 경고메시지를 만나게 되었다. error는 아니기 때문에 해당 테스트는 문제없이 수행되었지만 그래도 WARNING이 뜨니까 불편했는데 해결방법은 간단했다. Mybatis 라이브러리 버전을 업데이트해주면 되는 것이다.
스프링 MVC의 장점 중 하나는 최근 프로그래밍에서 많이 사용되는 JSON(JavaScripte Object Noation) 데이터에 대한 처리를 너무나 간단하게 처리할 수 있다는 것이다. 이를 위해서는 pom.xml을 사용해 Jackson-databind 라이브러리를 추가해야한다. pom.xml 1 2 3 4 5 6 com.fasterxml.jackson.core jackson-databind 2.13.0 Colored by Color Scripter cs 위와 같이 Jackson-databind를 추가해주고 VO, DTO 객체들을 반환해줄 떄 @ResponseBody 어노테이션을 사용하기만 하면 JSON 처리가 끝나는 정말 간편하다는 장점을 가진다. EX) Code 1 2 3 4 5 6 7 8 9 1..
자바에서는 날짜와 관련된 수 많은 라이브러리들이 존재하는데 1.8버전 이상에서는 LocalDate라는 매우 쓰기 편한 라이브러리가 있었다. 관련된 포스팅을 퍼왔다. 1. 날짜와 시간 객체 생성하기 1.1. LocalDate 로컬 날짜 클래스로 날짜 정보만 필요할 때 사용하면 된다. LocalDate currentDate = LocalDate.now(); // 컴퓨터의 현재 날짜 정보를 저장한 LocalDate 객체를 리턴한다. 결과 : 2016-04-01 LocalDate targetDate = LocalDate.of(int year, int month, int dayOfMonth); // 파라미터로 주어진 날짜 정보를 저장한 LocalDate 객체를 리턴한다. 결과 : 1986-11-22 리턴 타입메소..