본문 바로가기

JPA4

JPA DB 스키마 자동 생성 이상과 현실 객체 지향 애플리케이션은 테이블이 아닌 객체 구조에 집중해야 한다. ● JPA는 엔티티 클래스 정의만으로 DDL을 애플리케이션 실행 시점에 자동으로 생성해준다. ● DDL 생성 기능은 JPA의 실행 로직에는 영향을 주지 않는다. ● 데이터베이스 방언(Dialect)를 활용하여 데이터베이스에 맞는 적절한 DDL을 생성한다. ● 따라서 테이블 중심 설계 대신 객체 중심 설계를 할 수 있게 된다. DDL 생성 전략 설정hibernate.hbm2ddl.auto 속성값설명create애플리케이션 실행 시 테이블 삭제 후 생성(DROP + CREATE)create-dropcreate와 같지만, 애플리케이션 종료 시 테이블 제거update테이블이 없으면 생성하고, 변경 사항 반영validate엔티티와 테이블이 .. 2025. 6. 22.
JPA 클래스와 테이블 매핑 @Entity, @Table @Entity@Entitypublic class MemberEntity { ...} ● 해당 클래스가 JPA가 관리하는 엔티티임을 선언한다. ● @Entity는 name 속성을 가지는데, 기본값을 쓰는게 좋다. ● 설정하지 않으면 기본 값으로 class명이 설정 된다. Entity 선언 주의사항1. 파라미터가 없는 기본 생성자 선언 필수 (public or protected)● JPA는 Reflection을 사용하여 객체를 생성한다. ● 실무에서는 protected를 주로 사용하는데, 외부에서 new로 직접 생성하는 것을 막고, JPA만 사용할 수 있어 캡슐화 유지에 유리하다. 2. final 클래스 사용 금지public final class MemberEntity {...} ● JPA는 성능.. 2025. 6. 22.
JPA 영속성 관리 영속성 관리는 JPA의 핵심 개념으로, 객체와 데이터베이스 사이의 상태를 동기화하여 애플리케이션의 일관성과 성능을 보장한다. 영속성이란?● 애플리케이션이 종료되어도 데이터가 사라지지 않고 유지되는 성질을 말한다. ● JPA에서는 메모리 상의 객체를 데이터베이스에 영구 저장하고, 반대로 DB의 데이터를 객체로 조회·관리하기 위해 영속성 컨텍스트라는 것을 사용한다. 영속성 컨텍스트(Persistence Context)● 영속성 컨텍스트는 entity를 관리하는 JPA의 내부 메모리 상의 공간 ● 자바 객체와 DB 테이블 간의 상태를 동기화하는 중간 다리 역할// 웹서버가 올라오는 시점에 DB 당 하나만 생성EntityManagerFactory emf = Persistence.createEntityMa.. 2025. 6. 20.
JPA를 왜 사용해야 하는가? JPA 도입 이전 개발 환경● 전통적으로 Java 기반의 데이터베이스 연동 애플리케이션은 JDBC와 SQL을 직접 다루는 방식으로 구축되었다. ● 우리가 만든 객체를 관계형 데이터베이스에 보관하고, 이 데이터를 사용 할 때는 다시 객체로 바꾸어 사용했다. ● 즉 자바 객체를 SQL로 바꾸고, SQL을 자바 객체로 바꾸는 과정을 직접 반복한다. ● 이처럼 객체와 데이터베이스 사이의 매핑을 수작업으로 처리하는 방식은, 시스템이 커질수록 반복 작업이 많아진다. ● 오류 가능성 또한 높아지며, 유지 보수를 어렵게 만들었다.SQL에 종속된 개발 구조의 문제● 전통적인 개발 방식에서는 도메인 모델이 아닌, SQL이 중심이 된다. ● 도메인 모델이 복잡해질수록 SQL과 자바 코드 간의 간극이 커진다. ●.. 2025. 6. 18.