- [ Dev/JPA ][JPA] 6. 연관관계 매핑 주의점2025-02-28 23:00:31이전 포스팅에서 연관관계 매핑에 대해서 자세히 알아보았다. 이번에는 실전 예제를 통해 직접 어떻게 동작하는지 확인해보자. ❌ 잘못된 방법) - 연관관계의 주인이 아닌 가짜 매핑에 데이터를 입력한 경우[MEMBER2 테이블]package hellojpa.mapping;import jakarta.persistence.*;@Entity(name = "MEMBER2")public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; ..
- [ Dev/JPA ][JPA] 5. 연관관계 매핑 & 주인2025-02-21 19:25:16연관관계가 필요한 이유객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.- 조영호(객체지향의 사실과 오해 저자) 연관관계의 필요성을 알아보기 위해 예제 시나리오를 가져왔다.다음은 객체와 데이터베이스 테이블 간의 관계를 도식화 한 그림이다. [예제 시나리오 - 참조 대신에 외래키를 필드로 그대로 사용하는 경우]회원과 팀이 있다.회원은 하나의 팀에만 소속될 수 있다.회원과 팀은 다대일 관계다. 위 그림은 객체를 테이블에 맞추어 모델링했다. 따라서 `Member` 클래스의 필드 `teamId`가 `MEMBER` 테이블의 외래키 역할을 하게 된다. 그림에도 표현되어 있듯이 객체는 사실상 어떤 연관관계도 가지고 있지 않은 상태다. 데이터를 저장할 수 있는 별개의 필드로만 정의되어 있을 뿐이다..
- [ Dev/JPA ][JPA] 4. 데이터베이스 스키마 자동 생성2025-02-14 19:54:26`hibernate.hbm2ddl.auto`는 JPA에서 Hibernate가 데이터베이스 스키마를 자동으로 생성하거나 업데이트하는 기능을 제어하는 설정이다. 설정 값에 따라 DDL(Data Definition Language)을 애플리케이션 실행 시점에 자동 생성할지 결정한다. 설정 값 목록옵션설명create기존 테이블 삭제 후 다시 생성(DROP -> CREATE)create-dropCREATE와 같으나 종료 시점에 테이블 DROP(CRATE -> DROP)update기존 테이블을 유지하며, 엔티티 클래스에 맞게 스키마를 자동으로 업데이트.(변경분만 반영)validate기존 스키마와 엔티티 클래스가 일치하는지 검증.변경은 하지 않음.none스키마 자동 생성/업데이트를 하지 않음. 운영 환경에서는 절대 ..
- [ Dev/JPA ][JPA] 3. 매핑 종류(공사중..🚧)2025-01-11 23:26:41JPA에서 엔티티 매핑(Entity Mapping)은 객체 지향 프로그래밍에서 객체와 데이터베이스의 테이블 간의 관계를 정의하는 중요한 개념이다. JPA는 자바 객체와 관계형 데이터베이스의 테이블 간의 매핑을 통해 객체-관계 매핑(ORM)을 구현한다. 객체와 테이블 매핑다음과 같은 개념이 존재한다. 차례대로 자세히 알아보자.객체와 테이블 매핑: `@Entity`, `@Table`필드와 컬럼 매핑: `@Column`기본 키 매핑: `@Id`연관관계 매핑: `@OneToOne`, `@OneToMany / @ManyToOne` , `@ManyToMany`, `@JoinColumn` @Entity`@Entity` 붙은 클래스는 JPA가 관리, 해당 클래스가 엔티티임을 명시한다.엔티티는 데이터베이스의 테이블과 매..
- [ Dev/JPA ][JPA] 2. 영속성 컨텍스트(Persistence Context), flush, 준영속 상태2025-01-10 15:58:51영속성 컨텍스트란?영속성 컨텍스트는 JPA에서 매우 중요한 개념으로, 엔티티를 영속성 상태로 관리 및 저장하는 환경이다. `EntityManager`를 통해 영속성 컨텍스트에 접근하며, 데이터베이스와의 상호작용을 효율적으로 관리한다. 💡영속성이란?영속성은 데이터나 객체가 일시적인 메모리 내에 머무르는 것이 아니라, 영구적으로 저장되고 유지되는 특성을 의미한다.프로그래밍에서 영속성은 주로 데이터가 애플리케이션이 종료되더라도 데이터베이스, 파일 시스템, 영속성 저장소와 같은 외부 스토리지에 저장되어 지속적으로 접근할 수 있는 상태를 나타낸다.">💡영속성이란?영속성은 데이터나 객체가 일시적인 메모리 내에 머무르는 것이 아니라, 영구적으로 저장되고 유지되는 특성을 의미한다.프로그래밍에서 영속성은 주로 데이터..
- [ Dev/JPA ][JPA] 1. Java Persistence API 들어가기2025-01-05 10:43:48애플리케이션에서 데이터베이스를 관리하는 여러 방법애플리케이션에서 관계형 데이터베이스를 관리하는 방법은 여러가지가 있다. 우선 JPA를 학습하기 전, 다음과 같은 방법들을 직접 코드를 통해 비교해보고 JPA를 사용하면 어떤 이점과 단점이 있는지 확인해보자. 1. JDBC (Java Database Connectivity)JDBC는 Java 애플리케이션과 관계형 데이터베이스 사이의 연결을 관리하는 표준 API이다. SQL 작성부터 파라미터 바인딩, 심지어 커넥션 연결/해제, 트랜잭션 처리 등 하나의 SQL 문을 처리하기 위한 여러 코드 작성이 필요하다.특징: 직접적인 `Connection`, `PreparedStatement`, `ResultSet` 객체를 사용하여 데이터베이스와 상호작용한다.단점: 코드가 ..