진영을 나누어 보자 영속성 기능아래 DB를 연결하는 방식은 두가지로 나뉜다. SQL Mapper는 SQL을 명시해줘야 한다. ex) MyBatis, JDBC Template 객체를 통해 간접적으로 데이터베이스를 다루며 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. ex) JPA, Hibernate 🌠 ORM (Object - Relational - Mapping) 객체와 DB를 매핑하는 기술로 객체와 테이블을 자동으로 매핑해서 패러다임의 불일치 문제를 자동으로 해결해준다. SQL 중심의 매핑이 아닌 자바 클래스 위주의 매핑이다. 즉, 객체라는 특성과 ORM 메서드가 사용되며 영속성의 기능을 가지고있는 기술이다. ☄ 자주 틀리는 문제 - 모든 자동 매핑이 ORM은 아니다! ..
JPQL(Java Persistence Query Language) ? JPA의 구성요소중 하나이며 SQL문법을 추상화 시킨 객체지향 쿼리이다. 객체 중심의 문법인 만큼 특정 DB에 의존하지 않는다. 엔티티 조회, 묵시적 조인, 다형성 지원으로 SQL 보다 간결하다. 왜 개발자들은 JPA를 두고 JPQL를 사용할까? JPA 문법은 CRUD 명령어 처리에서 효율적인 명령어 기능을 제공하지만 검색 명령어에 대해서는 비효율적으로 작동한다. 객체중심의 JPA는 검색을 할때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야하는데 DB의 모든 데이터를 호출후 엔티티 객체로 변경하여 처리하는 것은 불가능하다. 때문에 개발자들은 특수한 경우에 대처할 수 있도록 쿼리를 사용할 수 있도록 만들어 놓은 것이 JPQL인 것이다..
🚀 Hibernate Hibernate는 JPA의 인터페이스를 구현한 구현체이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다. 🚀 JPA(Java Persistent API) JPA는 자바 진영의 ORM 기술 표준이며 관계형 데이터베이스와 자바 객체를 매핑하기 위한 EntityManager 인터페이스를 제공한다. 🌠 장점 CRUD 쿼리를 자동으로 생성해준다. DB 종류에 상관없이 사용 가능하다. Entity에 속성만 추가해준다면 쿼리를 건들 필요가 없다. 🌠 단점 상대적으로 학습이 어렵다. 복잡한 쿼리 작성이 어렵다. 동적 쿼리 같은 복잡한 쿼리를 처리하는 것이 어려우므로 QueryDSL을 함께 이용한다. 🚀 Spring Dat..
영속성 컨텍스트 JPA 프로세스의 근본이자 가장 중요한 요소가 컨텍스트이다. 이 영속성 컨텍스트는 JPA 작업중에 개발자가 commit 혹은 flush 하기 전까지 DB에 저장하지 않고 SQL 쿼리문을 계속에서 컨텍스트에 저장 하도록 되어있다. 영속성 컨텍스트의 구성 1차 캐시 영속성 컨텍스트에는 작업 대상이 될 엔티티를 1차 캐시에 저장하도록 되어있다. 그리고 엔티티 조회시 DB를 거치치 않고 1차 캐시를 우선적으로 조회하도록 하며 데이터가 없을경우 DB에서 조회 후 엔티티를 1차 캐시에 저장한 후에 영속 생태를 반환한다. 쓰기 지연 SQL 저장소 엔티티 insert, delete, update 작업시 쿼리를 1차 캐시 혹은 DB에 매번 작업처리하는 것이 아닌 쓰기 지연 SQL 저장소에 저장 후 flu..
ORM (Object - Relational - Mapping) 객체와 DB를 매핑하는 기술로 객체와 테이블을 자동으로 매핑해서 패러다임의 불일치 문제를 자동으로 해결해준다. SQL 중심의 매핑이 아닌 자바 클래스 위주의 매핑이다. ####모든 자동 매핑이 ORM은 아니다! 객체와 DB를 자동으로 매핑해준다는 점에서 결국 Mybatis 또한 ORM에 속할지도 모르지만 직접 쿼리를 작성한다는 점에서 SQL 중심의 개발 방식에 가깝기 때문에 ORM 진영에는 반대에 있다고 할 수 있다. 🚀 Hibernate Hibernate는 JPA의 인터페이스를 구현한 구현체이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다. 🚀 JPA(Java P..
객체지향 쿼리 JPQL SQL vs JPQL 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리 SQL을 추상화해서 특정 DB SQL에 의존하지 않는다. 구분 SQL JPQL 대상 DATA 객체 쿼리 형태 DATA 중심의 쿼리 객체 중심의 쿼리 JPQL(정적 쿼리) ? JPQL(Java Persistence Query Language)은 객체를 조회하는 객체지향 쿼리이다. 객체 중심의 문법인 만큼 특정 DB에 의존하지 않는다. 엔티티 조회, 묵시적 조인, 다형성 지원으로 SQL 보다 간결하다. 다형성(polymorphism) ? 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여..
- Total
- Today
- Yesterday
- OOP
- 수학
- interview
- 디자인패턴
- docker
- spring-cloud
- Solid
- 그래프
- 자격증
- 매트랩
- 면접
- Matlab
- C언어
- Algorithm
- JPA
- 스프링
- 자바
- 릿코드
- nginx
- Spring
- CS
- kakao
- springboot
- java
- 알고리즘
- security
- 프로그래머스
- 스프링부트
- 백준
- ajax
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |