본문 바로가기

JAVA/SpringBoot29

JPA의 관계 매핑: @OneToMany 와 @ManyToOne @OneToMany 와 @ManyToOne 어노테이션은 JPA 에서 엔티티 간의 관계를 매핑할 때 사용된다. @ManyToOne >> "다대일" 관계로, 많은(many) 측에서 사용된다. 데이터베이스에서 이 관계는 foreign key를 사용하여 구현된다. @JoinColumn 어노테이션과 함께 사용되어서 foreign key의 매핑을 지정한다. (ex: 여러 User 엔티티가 하나의 Department 엔티티에 속할 때, User 엔티티 내에 @ManyToOne 관계가 정의된다) @OneToMany >> "일대다" 관계로, 하나(one) 측에서 사용된다. 보통, 컬렉션이나 리스트 같은 컨테이너 타입과 함께 사용된다. 주로 조인 테이블을 사용해서 구현되며, @JoinColumn을 사용하여 매핑을 정의할 .. 2024. 3. 25.
JPA @Entity 어노테이션으로 엔티티 매핑하기 @Entity 는 JPA 에서 사용되는 주요 어노테이션 중 하나다. 특정 클래스가 엔티티임을 나타내고, 해당 클래스의 인스턴스가 데이터베이스에 저장되는 레코드와 연결될 것임을 명시한다. (@Entity 가 붙은 클래스는 데이터베이스 테이블의 한 행과 매핑된다는 뜻) 특징 >> @Entity 로 선언된 클래스는 JPA에 의해 데이터베이스의 테이블에 매핑된다. 클래스 이름은 기본적으로 테이블 이름으로 사용되지만, @Table 어노테이션을 사용하여 명시적으로 이름을 지정할 수 있다. 엔티티 클래스는 JPA 에 따라 public 이나 protected 기본 생성자를 가져야 한다. (JPA 가 클래스의 인스턴스를 만들 때 사용) 각 엔티티는 고유 식별자를 가져야 한다. @Id 어노테이션을 사용하여 필드에 표시한다.. 2024. 3. 25.
JPA @JoinColumn 어노테이션 이해하기 @JoinColumn 어노테이션은 JPA에서 사용되며, 엔티티의 필드가 다른 엔티티에 대한 외래 키(foreign key)를 나타낼 때 사용된다. 엔티티 간의 관계를 매핑할 때 주로 사용된다. (@ManyToOne 이나 @OneToOne 관계에서 자주 볼 수 있다) 속성 >> name : 데이터베이스 컬럼의 이름을 지정한다.(foreign key 컬럼의 이름이 된다) referencedColumnName : 참조하는 테이블의 컬럼 이름을 지정한다. (기본값은 참조된 테이블의 기본 키) foreignKey : foreign key 제약 조건을 직접 지정할 때 사용한다. unique : 이 속성을 true 로 설정하면 foreign key 컬럼에 대한 유니크 제약 조건을 설정한다(같은 값을 가진 foreig.. 2024. 3. 24.
JPA @MappedSuperclass: 공통 필드와 메소드 재사용으로 코드 중복 줄이기 @MappedSuperclass 는 JPA에서 사용하는 어노테이션으로, 공통적인 속성이나 행동을 여러 엔티티에서 상속받아 사용할 수 있게 해준다. @MappedSuperclass 로 지정된 클래스는 직접적으로 데이터베이스 테이블과 매핑되진 않는다. 다만 이 클래스를 상속받은 엔티티 클래스들은 상속받은 속성들을 자신의 것처럼 데이터베이스 테이블에 매핑할 수 있다. @MappedSuperClass 는 공통된 속성이나 행동을 가진 엔티티들 간에 코드의 중복을 줄인다. 모델의 일관성을 유지하는 데 매우 유용하다. 사용법 및 특징 >> 공통된 필드(id, 생성일 등)와 메소드들을 @MappedSuperclass 로 정의하면, 이를 상속받는 하위 클래스들이 이러한 속성과 행동을 재사용할 수 있다. @MappedSu.. 2024. 3. 24.