[Spring Data JPA] Querydsl
·
Web & Android/Spring Data JPA
Querydsl은 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API 문자열이 아닌 자바 소스코드로 작성하기 때문에 컴파일 시점에 오류 발견 가능 쿼리를 재사용할 수 있으며 제약 조건 조립 및 가독성을 향상시킬 수 있음 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리 생성 가능 자동완성기능을 이용하여 생산성 향상시킬 수 있음 이전 버전 // querydsl 추가 1 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'kr.inhat..
[Spring Data JPA] @Query
·
Web & Android/Spring Data JPA
@Query @Query 어노테이션을 사용해 Custom으로 쿼리문을 지정할 수 있다. public interface MemberRepository extends JpaRepository { @Query("select m.username from Member m") List findUsernameList(); } SQL과 유사한 JPQL이라는 객체지향 쿼리 언어를 통해 복잡한 쿼리도 처리 가능 JPQL 엔티티 객체를 대상으로 쿼리를 수행하는 객체지향 쿼리 SQL을 추상화해서 사용하기 때문에 특정 데이터베이스 SQL에 의존하지 않음 import com.shop.entity.Item; import org.springframework.data.jpa.repository.JpaRepository; public ..
[Spring Data JPA] JPA
·
Web & Android/Spring Data JPA
💡 매핑의 뜻 : 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 짝 지어(=연결 지어) 저장하는 데이터 구조 JPA(Java Persistence API) 자바 ORM 기술에 대한 API 표준 Persistence : 영속성 persist() 메소드를 사용해서 저장 Hibernate, OpenJPA ⇒ API(Application Programming Interface) Spring Data JPA save() 메소드를 사용해 저장이나 업데이트를 함 JPA 장점 특정 데이터베이스에 종속되지 않음 조금 종속 됨, 거의 구분없이 사용 가능 오라클, MySQL, MSSQL 등등을 왔다갔다 하면서 사용 가능 객체지향적으로 설계 가능 직관적이고 비즈니스 로직에 집중 유지보수 유리 및 생산..
[Spring Data JPA] QueryMethod
·
Web & Android/Spring Data JPA
Spring Data JPA에서 제공하는 공동 인터페이스는 기본적인 CRUD를 제공해준다. (JpaRepository) 조인 불가 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리 실행 가능 엔티티의 이름은 생략 가능, By 뒤에는 검색할 때 사용할 변수의 이름 작성 조건이 많을 때 쿼리 메소드를 선언하면 이름이 길어져 오히려 보기 힘들다는 단점이 있음 → 그래서 @Query 어노테이션 사용 JpaRepository Entity의 클래스명 + Repository 로 인터페이스 생성 JpaRepository 상속 (extends) 속성으로 ‘Entity의 클래스명’, ‘Entity기본키(Id)의 타입’ 지정 public interface UserRepository ..
[Spring Data JPA] 영속성 컨텍스트
·
Web & Android/Spring Data JPA
영속성 컨텍스트 💡 엔티티를 영구 저장하는 환경, 가상의 DB 역할 엔티티 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 Member member = new Member(); member.setId("member1"); member.setUsername("홍길동"); 영속(managed) : 영속성 컨텍스트에 관리되는 상태 EntityManager em = EntityManagerFactory.createEntityManager(); em.getTransaction().begin(); Member member = new Member(); member.setId("member1"); member.setUsername("홍길동"); // 객체를 영속성 컨텍스트..
[Spring Data JPA] ORM & SQL Mapper
·
Web & Android/Spring Data JPA
💡 영속성이란 데이터를 생성했던 프로그램이 종료되더라도 데이터는 사라지지 않는 것을 의미 영속성 있는 데이터들을 사용하기 편하게 해주는 것 → Persistene Framework 종류로는 SQL Mapper, ORM이 있음 Persistene Framework DB와의 연동되는 시스템을 빠르게 개발하고, 안정적인 구동을 보장해주는 프레임워크 SpringBoot와 DB를 이어주는 역할 (영속성 부여) 장점 1. 재사용 및 유지보수에 용이함 데이터베이스MySQL, MariaDB 등) 종류는 여러가지 종류가 있는데, 만약 DB를 교체하더라도 Persistene Framework는 그대로 두고 DB만 교체하면 되므로 재사용 및 유지보수에 용이하다. 2. 코드가 직관적임 Persistene Framework가 ..