728x90
반응형
JPA Entity에서 Enum 사용하는 이유
- 코드 가독성
- Enum을 사용하면 코드의 가독성이 높아집니다. Enum은 코드에서 명시적으로 정의된 상수 집합이므로 해당 값을 사용하는 곳에서는 해당 의미를 명확하게 이해할 수 있습니다.
- 안전성
- Enum을 사용하면 오타나 잘못된 값으로 인한 오류를 방지할 수 있습니다. 컴파일러는 Enum 값의 유효성을 검사하므로 잘못된 값이 사용되는 경우 컴파일 오류가 발생합니다.
- 유지보수성
- 코드에서 Enum 값을 수정할 때 해당 Enum을 사용하는 모든 곳을 찾아 수정할 필요가 없습니다. Enum 값만 수정하면 되므로 유지보수가 쉽습니다.
- 타입 안정성
- Enum을 사용하면 타입 안정성이 보장됩니다. Enum 값은 해당 Enum 타입으로만 제한되므로 다른 타입의 값을 실수로 사용하는 문제를 방지할 수 있습니다.
- 데이터베이스와의 상호 변환
- JPA에서 Enum을 사용하면 Enum 값과 데이터베이스에 저장되는 값 간의 변환을 쉽게 처리할 수 있습니다. EnumType을 설정하여 Enum 값을 문자열 또는 숫자로 저장하고 조회할 수 있습니다. 이를 통해 데이터베이스에 저장된 값을 응용 프로그램에서 Enum으로 사용할 수 있습니다.
JPA Entity에서 Enum을 사용하는 방법
1. Enum 정의
먼저 Enum을 정의합니다.
public enum UserType {
ADMIN,
USER,
GUEST
}
2. Entity에 Enum 속성 추가
Enum을 사용할 속성을 Entity 클래스에 추가합니다.
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING) // Enum 값을 문자열로 저장
@Column(name = "user_type")
private UserType userType;
// 다른 필드들
// 생성자, 게터/세터 등
}
3. Enum 값을 저장 및 조회
EnumType.STRING으로 설정하면 Enum의 값을 문자열로 저장합니다. 따라서 데이터베이스에는 Enum의 문자열 값이 저장됩니다.
@Service
public class UserService {
@Resource
private UserRepository userRepository;
@Transactional
public void saveUser() {
User user = new User();
user.setUserType(UserType.USER); // Enum 값 설정
userRepository.save(user);
}
public UserType getUserType(Long userId) {
Optional<User> optionalUser = userRepository.findById(userId);
if (optionalUser.isPresent()) {
User user = optionalUser.get();
return user.getUserType();
} else {
throw new EntityNotFoundException("User not found with id: " + userId);
}
}
}
728x90
반응형
'spring > spring jpa' 카테고리의 다른 글
[SpringBoot] JPA Comment (주석 추가) 설정 방법 (0) | 2024.02.02 |
---|---|
[QueryDSL] FullText 검색을 위한 Match ... against 절 사용법 (0) | 2023.08.24 |
[SpringBoot] QueryDSL org.apache.jasper.JasperException: Unable to compile class for JSP: (0) | 2023.08.24 |
[SpringBoot2] JPA Master/Slave 구조 분기 처리 (2) | 2023.08.23 |
[SpringBoot] JPA Projection (0) | 2021.06.23 |
댓글