분류 전체보기
-
[JPA] 경로표현식(묵시적 내부조인과 명시적 내부조인)JPA 2020. 4. 3. 02:38
경로표현식 ' . ' 을 찍어서 객체 그래프를 탐색 하는것 상태필드 단순히 값을 저장하기 위한 필드(ex. username) 경로 탐색의 끝. 더 이상의 탐색할 것이 없음 String query = "select m.username from Member12 m"; List resultList = em.createQuery(query, String.class).getResultList(); JPQL을 통해 데이터베이스로 날라간 실제 SQL을 보면 상태필드 조회는 기존의 JPQL과 같음을 확인할 수 있다. 연관필드 단일값 연관필드 : @ManyToOne, @OneToOne 대상이 엔티티일 경우 묵시적 내부조인 발생 추가 탐색 가능(ex. m.team.name) 컬렉션 값 연관필드 : @OneToMany, @..
-
[JPA] JPA 쿼리 지원 방식(JPQL)JPA 2020. 3. 30. 02:43
JPA 쿼리 지원 방식 JPA는 데이터베이스에 데이터를 주고받기 위한 다양한 쿼리 방식을 지원한다. JPQL 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색(a.getB().getC()) 테이블이 아닌 매핑된 엔티티를 대상으로 검색(SQL은 테이블을 대상으로 검색) JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공 ANSI 표준 SQL을 지원하는 문법 모두 적용이 가능 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다. 단순 String 값으로 쿼리가 쓰이기 때문에 동적 쿼리를 만들기 어렵다. Criteria 쿼리를 String 문자가 아닌 자바 코드로 작성하기 때문에 컴파일 오류를 찾기 쉬움 동적 쿼리를 짜기 수월하지만 코드의 가독성이 매우 떨어져..
-
[JPA] 데이터 타입 분류 (Embedded)JPA 2020. 3. 29. 00:24
JPA 데이터 타입 분류 1. 엔티티 타입 @Entity로 정의하는 클래스 객체를 의미 엔티티 타입은 데이터(속성) 값이 변해도 식별자(@Id)를 통해 추적이 가능함 2. 값 타입 자바 기본 타입 또는 객체(int, Integer, String..) 값 타입은 식별자가 존재하지 않기 때문에 추적이 불가능 값 타입 분류 기본값 타입 자바 기본 타입(primitive type) 래퍼 클래스(wrapper) String 특징 생명주기를 엔티티에 의존함(엔티티가 삭제되면 필드도 함께 삭제) 값 타입은 공유되서는 안됨(특정 엔티티 속성의 일부가 변경되는 것이 다른 엔티티에 영향을 미치면 안 됨) 자바의 기본 타입(primitive type)은 항상 값을 복사하는 개념이기 때문에 공유되는 특성이 없다. 임베디드 타..
-
[JPA] 상속관계 매핑 전략();JPA 2020. 3. 27. 16:38
JPA는 테이터베이스와 객체를 매핑해주는 자바 진영의 ORM 기술 표준이다. 그럼 객체지향언어의 특징 중 하나인 '상속'의 개념이 포함된 객체는 데이터베이스에서 어떠한 방식으로 매핑되는 것일까? Item 객체를 부모클래스로 지정하고 Album, Movie, Book 객체는 부모클래스를 자원을 상속받은 자식클래스로서 역할을 수행하고있다. 데이터베이스는 상속을 어떤식으로 표현할까? 결론부터 말하자면 객체의 상속관계와 정확하게 일치하는 데이터베이스 모델링은 존재하지 않는다고 한다. 차선책으로 상속관계와 비교적 유사한 슈퍼타입-서브타입 모델링 기법으로 데이터베이스를 상속 객체에 매핑해야 한다. 슈퍼타입-서브타입 논리모델을 실제 데이터베이스 물리모델로 구현하는 것은 3가지 전략이 있다. 조인 전략 1. 모델링 공..
-
[JPA] JPA 특징 정리JPA 2020. 3. 24. 04:47
JPA(Java Persistence API)란? 자바 진영의 ORM 기술 표준. JPA는 인터페이스이며 이것의 구현체는 Hibernate, EclipseLink, DataNucleus가 존재한다. ORM(Object-relational mapping)이란? 객체와 관계형 데이터베이스를 중간에서 매핑해주는 기술. 객체를 Collection에 저장하고 조회하는 것처럼 DB 테이블에서도 저장하고 조회할 수 있다. EBJ - 엔티티 빈이라는 기술이 ORM의 시초지만 성능과 사용방법이 너무 뒤떨어져 사용도가 낮았고 ORM 기술을 이용한 hibernate가 오픈소스로 등장하게 된다. 많은 인기를 얻은 hibernate는 자바 진영에서 JPA로 재정의 되어 표준 스펙으로 현재까지 널리 사용되고 있다. JPA를 사용..
-
[spring] 자바 Config 설정하기 vs XML 설정하기Spring 2020. 3. 10. 00:34
Spring Framework는 설정이 반이라는 말이 있다. 그만큼 초기 설정 방법도 여러 가지고 복잡하기 때문에 이런 말이 나왔을 거라 생각한다. (스프링 부트를 이용해서 간단하게 설정하는 해결하는 방법도 있구..) 기본적인 XML을 통한 설정과 자바 Annotation을 통한 설정 두 가지를 정리해보자. XML을 통한 스프링 설정 web.xml Deployment Descriptor(배포 서술자) 라고 불리며 웹페이지의 환경설정 부분을 담당한다. WAS(Web Application Server)가 최초 구동될 때 web.xml을 읽고 그에 해당하는 설정을 구성한다. 설정을 위한 설정파일이 되는 셈이다. contextConfigLocation /WEB-INF/spring/root-context.xml ..
-
[Java] Collection 프레임워크(List, Set, Map)Java 2020. 3. 4. 02:51
java.util 패키지는 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 Collection과 관련된 인터페이스와 클래스를 제공한다. Collection 프레임워크 주요 인터페이스 List Set Map List 인터페이스 - List 인터페이스를 구현한 클래스 : ArrayList, Vector, LinkedList - 순서를 유지한 상태로 저장하고 객체 중복 저장을 허용한다. - 객체를 인덱스로 관리하기 때문에 객체가 추가되면 자동 인덱스가 부여되고 해당 인덱스를 통해 객체를 검색, 삭제할 수 있는 기능을 제공한다. - 객체 자체를 저장하는 것이 아니라 객체의 주소 값을 참조하는 것. List 인터페이스의 공통 메소드 method 기능 boolean add(E e) 객체를 리스트 맨 마지막에 추..
-
[spring] 스프링 MVC 라이프사이클 이해하기();Spring 2020. 2. 25. 22:44
웹 요청을 처리하기 위해 스프링은 다양한 구성 요소들을 연동한다. 그 중심에는 항상 DispatcherServlet 객체가 존재한다!! 스프링 MVC 라이프 사이클을 간단하게 정리해 보았다. 라이프 사이클을 알아두는 것만 해도 스프링 MVC의 큰 틀을 이해할 수 있다. :) 스프링 MVC 라이프사이클 클라이언트로부터 웹브라우저를 통해 요청이 들어오면 DispatcherServlet 객체가 요청을 가로챈다. DispatcherServlet 객체는 요청을 처리하기 위해 HandlerMapping 객체에게 요청 경로에 부합하는 컨트롤러 객체 검색을 요청한다. HandlerMapping 객체는 요청을 처리하고 알맞은 컨트롤러 객체를 DispathcerServlet 객체에게 리턴한다. 컨트롤러 객체를 전달받은 D..