Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Link
													
											
									
													Tags
													
											
												
												- 문자열
- spring boot
- mysql
- 프로그래머스
- 데이터베이스
- 자바
- select
- spring security 6
- 1차원 배열
- DI
- string
- @transactional
- 스프링부트
- hibernate
- jpa
- SSL
- springboot
- spring
- Docker
- static
- sql
- nginx
- AWS
- spring mvc
- java
- Django
- join
- PYTHON
- ORM
- 스프링
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
													Archives
													
											
									개발하는 자몽
[JPA] 임베디드 타입(@Embeddable, @Embedded)에 관하여 본문
@Embeddable, @Embedded
- `@Embeddable` 애노테이션이 있는 클래스는 기본 생성자가 필요함
- 임베디드 타입은 값 타입에 속하는데, 이러한 값 타입은 여러 엔티티에서 공유하면 side effect를 일으킬 수 있다.
- 따라서 불변 객체(Immutable Object)로 설정하여 이러한 문제를 방지하는 것이 좋다.
- `@Embeddable` 클래스에 수정자(setter)를 생성하지 않고 생성자만 두어, 생성자로만 값을 설정하게 한다
- 수정자가 없으므로 해당 임베디드 값 타입을 필드로 갖고 있는(@Embedded) 엔티티에서는 특정 값만 수정하는 것이 불가능. 객체를 새로 생성해야 함.
 
 
public static void main(String args[]) {
    Address address = new Address("city", "zipcode"); //임베디드 값 타입
    
    Member member = new Member(); // 멤버 엔티티
    member.setAddress(address);
    
    //만일 address의 city 값을 수정하고 싶다면 아래와 같이 해야함
    
    Address newAddress = new Address("newCity", "zipcode"); //새로운 객체
    member.setAddress(newAddress);
    
    //Address 클래스에는 수정자가 없고 생성자만 존재하므로, 특정 값만 수정하고 싶어도 위와 같이 새로운 객체를 생성해야 함
}
'Java & Kotlin > Spring' 카테고리의 다른 글
| [Spring Data JPA] 하이버네이트 Batch Size (1) | 2024.11.25 | 
|---|---|
| [JPA Error] No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call (0) | 2024.10.23 | 
| [Spring Boot / Error] Required request body is missing (0) | 2024.07.13 | 
| [Spring Security] 예외 처리하기 (0) | 2024.06.21 | 
| [Spring Security] 역할/권한 구현하기 (0) | 2024.06.14 | 
			  Comments