분류 전체보기(363)
-
JPA - 즉시로딩과 지연로딩(FetchType.EAGER,FetchType.LAZY) 그리고 프록시
JPA - 즉시로딩과 지연로딩(FetchType.EAGER,FetchType.LAZY) 그리고 프록시 만약 회원이라는 엔티티 객체와 팀이라는 엔티티 객체가 있고 회원:팀 = N:1 연관관계를 맺고 있다고 가정하자. 만약 회원이라는 엔티티를 데이터베이스에서 조회했을 경우 팀이라는 엔티티 객체를 같이 로딩해서 사용할 수 도 있겠지만 진짜 회원만 사용할 목적으로 엔티티객체를 조회 할 수도 있다. 그렇다면 만약 필요하지 않은 연관관계 객체의 로딩을 뒤로 미룬다면 어떻게 할까? 이것은 불필요한 데이터베이스 조회 성능을 최적화 할 수 있는 기회가 될 수 있을 것이다. 예를 들어 연관관계가 List 필드로 되어있고 연관된 객체가 수만개라면? 그리고 해당 List연관관계의 엔티티는 필요하지 않은 상황이라면? 이럴경우에..
2019.02.04 -
JPA - 하나의 엔티티에 다수 테이블 매핑(@SecondaryTable,@SecondaryTables)
JPA - 하나의 엔티티에 다수 테이블 매핑(@SecondaryTable,@SecondaryTables) 123456789101112131415@Entity@Table(name = "BOARD")@SecondaryTable(name = "BOARD_DETAIL", pkJoinColumns = @PrimaryKeyJoinColumn(name = "BOARD_DETAL_ID"))@Getter@Setterpublic class Board { @Id @Column(name = "BOARD_ID") private String id; private String title; @Column(table = "BOARD_DETAIL", name = "BOARD_CONTENT") private String content;}..
2019.02.03 -
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