목록JPA (6)
종식당

👾 JPAJPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있다.직접 할당은 @ID 어노테이션만을 사용하여 ID값을 직접 할당하는 방식이다.반면에, 자동 할당은 @ID와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식이다.@GeneratedValue의 strategy옵션을 통해 생성 전략을 설정할 수 있는데 여기에 올 수 있는 값인 GenerationType은 다음과 같다.@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() def..

🎞️ JPA N + 1 문제JPA N + 1 문제는 연관 관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생한다. 예를 들어, 블로그 게시글과 댓글이 있는 경우, 게시글을 조회한 후 각 게시글마다 댓글을 조회하기 위한 추가 쿼리가 발생할 수 있다. 이를 N+1 문제라고 한다.⭐ findAll 메서드의 글로벌 패치 전략 별 N + 1 문제 상황에 대해서 설명해 주세요.spring data jpa에서 제공하는 findAll()을 실행하면 N+1문제가 발생한다. 이는 findAll()은 select u from User u라는 JPQL 구문을 생성해서 실행하기 때문이다. JPQL은 글로벌 패치 전략을 고려하지 않고 쿼리를 실행한다. 모든 User를 조회하는..

📚 ddl-autoddl-auto 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA구현체를 사용할 때 데이터베시스 스키마 관리를 제어하는 설정이다. 이 옵션은 application.properties, application.yml파일에서 설정할 수 있으며, 다양한 값에 따라 데이터베이스 스키마에 대해 다른 동작을 수행하게 된다. ddl-auto 옵션에는 none, validate, update, create, create-drop등이 존재한다. 🕵️ 각 옵션에 대한 설명none데이터베이스 스키마와 관련된 어떤한 작업도 수행하지 않는다. 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용할며, 프로덕션 환경에서 주로 사용된다.validate애플리케이션이 시작될 때, 엔티티 매핑이 ..

SpringBoot로 개발을 진행할 때 반복되는 작업을 줄였고 생산성 향상을 위해 많은 개발자들이 Annotation을 사용하고 있다. 이 어노테이션을 통해서 빈을 주입받거나, 테스트 환경 구성, 생성자와 getter, setter 등을 쉽게 사용할 수 있다. 어노테이션의 용도컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.실행 시(런타임시) 특정 기능을 실행하도록 정보를 제공한다.어노테이션을 사용하는 순서어노테이션을 정의한다.클래스에 어노테이션을 배치한다.코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다.원래 알고 있었지만 조금 헷갈렸던 어노테이션들 위주로 정리해..

이번 데이터베이스 기초 과정에서는 서버와 DB연결 방법에 대해서 학습했는데 크게 3가지를 배웠다.JDBC, mybatis, JPA에 대해 알아보려 한다. JDBC 우선 JDBC(Java DataBase Connectivity)란 Java와 데이터베이스를 연결하기 위한 Java 표준 인터페이스다. 여러 DB 드라이버를 제공하기 때문에 MySQL, MariaDB, PostgreSQL 등 다양한 DB와 연결이 가능하며 Java 표준이기 때문에 JVM 위에서 운영되는 애플리케이션에서 자유롭게 사용할 수 있다.JDBC는 쿼리를 실행하기 전과 후에 연결 생성, 명령문 등 많은 코드를 작성해야 하고, 커넥션 관리와 예외 처리 등에 불편함이 있어 이를 해결하기 위해 Spring JDBC가 나왔다. Spring JDBC..