분류 전체보기(361)
-
JPA - @MappedSuperClass (매핑정보 상속)
@MappedSuperClass바로 직전의 포스트에서는 JPA에서의 엔티티 상속 전략에 대해서 다루었다. 이번에 다룰 것은 비슷한 상속개념이지만, 이전 포스트 글과는 다르게 부모에 해당하는 클래스가 테이블과 매핑되는 것이 아니라, 단순 상속받는 엔티티에게 매핑정보만 상속해주는 것이다. 즉, 객체들이 주로 사용하는 공통 매핑정보등을 정의하여 그 매핑정보를 엔티티들에게 상속해주는 것이다. 1234567891011121314151617181920212223242526272829@MappedSuperclass@Getter@Setterpublic abstract class BaseEntity { @Id @Column(name = "BASE_ID") @GeneratedValue(strategy=GenerationT..
2019.02.02 -
JPA - 상속 관계 매핑, @Inheritance, @DiscriminatorColumn
JPA - 상속 관계 매핑, @Inheritance, @DiscriminatorColumn 사실 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 각각의 테이블로 변환 4개 각각을 모두 테이블로 만들고 조회할 때 조인을 사용한다.(조인전략) 통합 테이블로 변환 단 하나의 테이블을 사용해서 상속관계를 통합한다.(단일 테이블 전략) 서브타입 테이블로 변환 서브 타입마다 하나의 테이블을 만든다(..
2019.02.02 -
Mac OS - Eclipse & Lombok(롬복 사용방법)
해당 환경은 모두 Mac OS환경에서 진행되었습니다. Lombok(jar) 설치 https://projectlombok.org/download에서 최신버전 혹은 원하는 버젼의 Lombok을 다운로드 받아 줍니다. Lombok jar 실행lombok이 설치된 경로로 들어가서 jar파일을 실행시켜줍니다. java -jar $LOMBOK_DOWNLOAD_PATH/lombok.jar 만약 첫번째 이미지처럼 떴다면 로컬의 IDE를 찾을 수 없다는 alert창입니다. 그렇다면 2,3번째 이미지처럼 IDE의 ini파일의 경로를 적용시켜서 install/Update 버튼을 눌러준 후에 인스톨러를 종료시켜줍니다. 여기까지 따라왔다면 이클립스를 재시작해줍니다. 마지막 이클립스의 ini파일을 열어보면 아래와 같이 javaa..
2019.02.02 -
Lucene - 유사어,동의어 필터(SynonymFilter)를 이용한 커스텀 Analyzer
Lucene - 유사어,동의어필터(SynonymFilter)를 이용한 커스텀 Analyzer Lucene에는 사용자가 입력한 질의 혹은 색인 할때의 토큰화 과정에서 여러가지 필터를 등록할 수 있다. 토큰의 종류는 아주 많다. StopFiler(불용어처리,불용어처리 단어의 리스트가 필요),SynonymFiler 등 의 필터들이 존재한다. 그 말은 단순히 토큰화된 텀들을 그대로 사용하는 것이 아니라 전처리,후처리를 필터를 이용해서 처리하여 토큰화된 텀에게 여러가지 효과?를 적용할 수 있는 것이다. 여기서는 간단히 유사어필터를 이용한 Custom한 분석기를 만들어 볼 것이며, 유사어 필터의 특징을 간단히 설명할 것이다. 12345678910111213141516171819202122232425262728293..
2019.02.02 -
JAVA - Hashtable, HashMap, ConcurrentHashMap 비교
Hashtable, HashMap, ConcurrentHashMap 비교 1. Hashtable, HashMap, ConcurrentHashMap위에 나열된 클래스들은 Map 인터페이스를 구현한 콜렉션들입니다. 이 콜렉션들은 비슷한 역할을 하는것 같으면서도 다르게 구현되어 있습니다. 기본적으로 Map 인터페이스를 구축한다면 구조를 가지게 됩니다. 하나씩 살펴봅시다. 2. HashtableHashtable은 put, get과 같은 주요 메소드에 synchronized 키워드가 선언 되어 있습니다. 또한 key, value에 null을 허용하지 않습니다. 3. HashMapHashMap은 주요 메소드에 synchronized 키워드가 없습니다. 또한 Hashtable과 다르게 key, value에 null을..
2019.02.01 -
Lucene - 분석기(Analyzer)로 분석한 토큰(Token)결과 출력
Lucene - 분석기(Analyzer)로 분석한 토큰(Token)결과 출력 루씬에서 색인을 하기위해서는 선행과정이 있다. 물론 문서안에 정의된 여러개의 필드에 적용한 속성에 따라 다르긴 하지만 ANALYZE속성을 적용한 필드인 경우에는 색인하기 이전에 텍스트를 토큰으로 추출하고 그 토큰에 여러가지 메타정보(start,end 정수/위치증가값 등등의 데이터)를 섞은 텀으로 만든 후에 색인에 들어간다. 여기에서 보여줄 예제는 색인을 위한 텍스트에 분석기의 분석과정을 적용 후에 어떻게 토큰이 분리되는지 확인하는 간단한 예제이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555..
2019.01.29