JPA 3

[Project] N:M 매핑에서 복합 키(Composite Key)를 사용할 때 주의할 점

복합키(Composite Key) vs 고유 Id JPA에서 N:M 관계를 매핑할 때, 중간 테이블(연결 테이블)에 고유 ID(@Id)를 넣을 것인지, 복합 키(@EmbeddedId)를 사용할 것인지 고민하는 경우가 많다. 처음에는 "그냥 @Id를 넣고 auto_increment 하면 되지 않나?"라고 생각할 수 있지만, 이 방식은 데이터 무결성과 성능 문제를 초래할 수 있다.본 글에서는 복합 키(Composite Key)를 사용할 때의 장점과 @Id 방식이 가지는 문제점을 분석해보겠다. N:M 관계에서 중간 테이블의 역할ProblemSet(문제지)와 Problem(문제)은 N:M 관계이다.따라서 ProblemSetToProblem이라는 중간 테이블이 필요하다.이때, 이 테이블의 고유 식별자(PK)를 어..

EduClass Project 2025.03.05

[JPA] 영속성 관리(Entity Manager, Entity Factory, Persistence Context)

Entity Manager와 Entity FactoryJPA는 크게 Entity와 테이블을 매필하는 설계 부분과 매핑한 Entity를 실제 사용하는 부분으로 나눌 수 있다.// Entity Factory 생성EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa"); Entity Manager는 Entity를 저장하고, 수정하고, 삭제하고, 조회하는 등 Entity와 관련된 모든 일을 처리하는 관리자이다.// Entity Manager 생성EntityManager em = emf.createEntityManager();Entity Factory는 이름 그대로 Entity Manager을 만드는 공장이다. 공장을 만드는 비용은 상당히 ..

DATABASE 2025.02.16

[SQL] JPA란 무엇인가?

JPA란 무엇인가?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. JPA는 애플리케이션과 JDBC사이에서 동작한다.   ORM이란 무엇인가?ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. 따라서 ORM 프레임워크는 객체 ..

DATABASE 2025.02.12