영속성 컨텍스트란? 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(member); 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미! 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed): 영속성 컨텍스트에 저장된 상태 준영속(detached): 영속성 ..
Test worker 인텔리제이에서 Gradle + Springboot로 프로젝트를 생성 후 @SpringBootTest를 돌리게되면 오랜 시간 뒤에, Test worker 라는 처음보는 녀석이 뜨면서 아주 천천히 테스트가 실행된다. 최신버전의 Intellij에서는 IDE에서 바로 테스트를 돌리는게 아닌, Gradle 빌드를 한 뒤에 테스트를 하게된다. (개발할 시간 1분 1초가 아까운데 시간을 은근히 잡아먹는다.) Intellij 설정 변경 Preference(단축키 command + ',')를 열고 Build, Execution, Deployment -> Build Tools -> Gradle 메뉴를 열어 Build and run using, Run test using 부분을 사진과 같이 Gradle..
Intellij에서 camel case를 snake case로 변경해주는 단축키를 제공하는 플러그인이 있습니다. 1. Ctrl + Shift + A -> plugins 2. Marketplace 클릭 -> simple camelcase 입력 -> Install 클릭 그냥 camelcase라고 치면 아주 설치 횟수가 많은 플러그인이 있는데 그 플러그인은 kebab-case -> SNAKE_CASE -> PascalCase -> camelCase 순으로 변경되는 불편함이 있다. 별로다. 3. 변환하고 싶은 문자를 드래그한 후 Shift + Alt + U를 누르면 snake는 camel로 camel은 snake로 변경된다.
Querydsl 설정 방법 공식 문서에는 Gradle에 대한 내용이 누락되어 있으며, 실제로 QueryDSL 설정 방법은 Gradle 및 IntelliJ 버전에 따라 상이 (1) gradle.build **// 1. queryDsl version 정보 추가** buildscript { ext { **queryDslVersion = "5.0.0"** } } plugins { id 'org.springframework.boot' version '2.6.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' **// 2. querydsl plugins 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0...
ORM ORM (Object-Relational Mapping) 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑 (연결) 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다. ORM 프레임워크가 중간에서 매핑해 준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. ORM 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있음 내부적으로는 쿼리를 생성하여 DB를 조작함 하지만 개발자가 이를 신경 쓰지 않아도 됨 Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코..
2. Querydsl 특징 (1) Querydsl의 특징 Spring Data JPA가 기본적으로 제공해주는 CRUD 메서드 및 쿼리 메서드 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 됩니다. 간단한 로직을 작성하는데 큰 문제는 없으나, 복잡한 로직의 경우 개행이 포함된 쿼리 문자열이 상당히 길어집니다. JPQL 문자열에 오타 혹은 문법적인 오류가 존재하는 경우, 정적 쿼리라면 어플리케이션 로딩 시점에 이를 발견할 수 있으나 그 외는 런타임 시점에서 에러가 발생합니다. 이러한 문제를 어느 정도 해소하는데 기여하는 프레임워크가 바로 QueryDSL입니다. QueryDSL은 정적 타입을 이용해서 SQL 등의 쿼리를 생성해주는 오픈소스 프레임워크입니다. (2)..
- Total