[JPA] 복합키 사용Backend/Spring2022. 10. 5. 21:40
Table of Contents
반응형
서론
복합키는 기본키가 되지 못하는 칼럼들을 서로 묶어서 기본키처럼 사용하는 것입니다.
Entity
예를 들어 사용자명과 이메일을 복합키로 사용한다고 가정합니다. 복합키로 묶는 CompositePK
클래스를 생성하고, @IdClass
어노테이션을 사용하여 설정합니다.
@Entity
@Table(name = "tb_user")
@IdClass(CompositePK.class) //이름과 이메일을 primary key로 사용
@Data
public class User {
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class CompositePK implements Domain {
/** 사용자명 */
@Column(nullable = false, length = 100)
private String name;
/** 이메일 */
@Column(length = 45)
private String email;
}
/** 사용자비밀번호 */
@Column(nullable = false, length = 100)
private String password;
/** 연락처 */
@Column(length = 20)
private String tel;
/** 생성일시 */
@CreationTimestamp
private LocalDateTime createDate;
/** 수정일시 */
@UpdateTimestamp
private LocalDateTime updateDate;
/** 권한 */
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private UserRole role;
public enum UserRole {
ADMIN, GUEST
}
}
Repository
Repository 인터페이스를 생성하고 JpaRepository 를 상속받습니다.
public interface UserRepository extends JpaRepository<User, CompositePK> {
}
사용
Service 클래스를 생성하고 Repository 인터페이스를 불러와서 사용합니다.
@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
public User get(CompositePK id) {
return userRepository.findById(id).orElse(null);
}
}
반응형
'Backend > Spring' 카테고리의 다른 글
[JPA] @ElementCollection 사용 예 (0) | 2022.12.05 |
---|---|
[Spring] Swagger Header 설정 방법 (0) | 2022.10.12 |
[JPA] Select Query 사용 방법 (0) | 2022.09.26 |
[Spring Boot] 환경에 따른 설정 방법 (0) | 2022.09.22 |
[Spring Boot] Maven 빌드 방법 (0) | 2022.09.21 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!