DB 5

[DB/Error] h2 사용 에러 - engine[*]=InnoDB"; expected "identifier";]

Spring Boot 환경에서 In-memory h2를 사용하던 중 에러가 발생했다.에러더보기더보기    create table `bookmark` (        `bookmark_id` integer not null auto_increment,        `created_date` varchar(255) not null,        `last_modified_date` varchar(255) not null,        `name` varchar(255),        `user_id` bigint,        primary key (`bookmark_id`)    ) engine=InnoDB    create table `bookmark` (        `bookmark_id` intege..

DB 2025.02.03

[DB/테스트] @DataJpaTest

@DataJpaTest는 JPA, 데이터베이스 관련 설정만 최소한으로 로드하여 레포지토리/엔티티를 테스트하는 어노테이션이다.  임베디드 데이터베이스를 자동 구성해주기 때문에 외부 데이터베이스를 사용하지 않아도 된다.Application Context에 JPA, 데이터베이스 관련 클래스들을 자동으로 로드해준다.테스트가 끝날 때마다 데이터베이스 상태가 자동으로 rollback된다. 위 내용에 대해 더 자세히 알아보자!1. 기본적으로 In-memory Embedded Database H2를 사용@DataJpaTest는 테스트 실행 시 In-memory Embedded Database H2를 기본적으로 사용한다. 임베디드 데이터베이스는 애플리케이션 외부의 데이터베이스(MySQL 등) 없이 테스트 실행 중 메모리..

DB 2025.02.03

[DB/MySQL] MySQL Index의 동작 원리 - B-Tree 구조

인덱스데이터베이스 개체(테이블, 인덱스, 뷰, 스토어드 프로시저, 트리거) 중 하나데이터를 조회할 때 결과를 빠르게 찾는 데 쓰인다.인덱스 없이 특정 데이터를 검색할 경우, 테이블 전체를 검사해야 한다.-- customer 테이블의 customer_name 열에 인덱스를 지정CREATE INDEX idx_customer_name ON customer(customer_name);-- 인덱스를 통해 결과를 찾음SELECT * FROM customer WHERE customer_name = "Kim"; 인덱스의 동작 원리* MySQL Database의 B-Tree 구조를 기준으로 설명IndexClustered Index :MySQL이 자동으로 설정하는 index최대 효율을 위해 중복이 최대한 발생하지 않는 컬..

DB 2025.02.03

[DB/JPA] 엔티티 매핑(@Entity) / 데이터베이스 스키마 자동 생성 기능 (ddl-auto)

JPA는 엔티티 객체와 DB 테이블을 연결해서 개발자가 직접 쿼리를 쓰지 않고 메서드로 간단하게 데이터베이스에 접근할 수 있게 해줍니다. 그런데 어떤 엔티티 객체와 DB 테이블이 대응되는지는 개발자가 직접 어노테이션을 붙여서 JPA에게 알려줘야 합니다. 이번 포스팅에서는 JPA에서 엔티티를 매핑할 때 자주 쓰이는 어노테이션에 대해 알아보겠습니다. @Entity@Table(name="MEMBER")public class Member { ...@Entity테이블과 매칭될 클래스실제로 DB 테이블과 연결되기 때문에, 내용이 DB 테이블과 다르면 안 됨.name : jpa에서 사용할 엔티티 이름 지정. 디폴트값은 클래스 이름인데, 보통 클래스 이름을 사용함. 다른 패키지에 이름이 같은 엔티티 클래스가 있다..

DB 2024.12.16

[DB/JPA] 기본 키 매핑(직접 할당 @Id /자동 할당 @GeneratedValue), 컬럼 매핑(@Column)

기본 키 매핑기본 키를 할당하는 방식은 두 가지입니다.직접 할당자동 할당기본 키 직접 할당기본키로 지정하고싶은 필드에 @Id를 붙여줍니다. @Id@Column(name = "ID")private int id; @Id 적용 가능 타입 :자바 기본형Wrapper 타입Stringjava.util.Datejava.sql.Datejava.math.BigDecimaljava.math.BigInteger @Id 필드에 개발자가 직접 값을 할당해야 합니다. 그런데 영속성 컨텍스트는 엔티티를 식별자값으로 관리하기 때문에 식별자 값이 할당되어야 영속성 컨텍스트의 관리를 받을 수 있습니다. 식별자 값이 없는 상태로 em.persist하면 예외가 발생하는데, 어떤 예외가 발생하는지는 jpa 표준에 정의되어있지 않습니다. 하이..

DB 2024.12.15