-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
끄적끄적
Collection
- Hibernate는 Collection을 효율적으로 관리하기 위해 Entity를 영속 상태로 만들 때 원본 Collection(Java)을 감싸고 있는 내장 Collection(Hibernate)을 생성해서 사용하도록 참조를 변경함
-
어떤 점에서 효율적일까? 성능을 말한 것 같진 않고, 추상화 시킴으로써 관리가 용이해짐을 말하는건가?
- 내장 Collection은 원본 Collection을 감싸고 있어서 Wrapper Collection이라고도 불린다
Collection,List->PersistentBag(중복 O, 순서 X)- 중복 Entity 있는지 비교하지 않고 단순히 저장만 함
-
Entity를 추가해도 지연 로딩된 Collection을 초기화하지 않음?
-
- 중복 Entity 있는지 비교하지 않고 단순히 저장만 함
List+@OrderColumn->PersistentList(중복 O, 순서 O)- DB에 저장할 때 순서 값을 저장해서 조회할 때 사용함
-
오 처음�앎.
-
근데 역시 실무에서 잘 사용하지 않는군. ArrayList에서 중간에 끼워넣거나 삭제할 때의 성능상 단점과 같은 이유군.
-
- DB에 저장할 때 순서 값을 저장해서 조회할 때 사용함
Set->PersistentSet(중복 X, 순서 X)- 중복 Entity 있는지 비교해야 함
-
Entity를 추가할 때 지연 로딩된 Collection을 초기화 함?
-
- 중복 Entity 있는지 비교해야 함
-
하이버네이트는 이런 특징 때문에 컬렉션을 사용할 때 즉시 초기화해서 사용하는 것을 권장한다??-
`Collection members = new ArrayList();
-
-
Converter: Entity의 데이터를 변환해서 DB에 저장 가능
- y,n 대신 0,1로 저장하거나...
- date, datetime 대신 long으로 저장하거나...
- 근데 이런건 안티패턴이지 않나.. 굳이..? 코드 난독화를 위한건가?
Listener
- Use case
- 모든 Entity를 대상으로 어떤 사용자가 삭제를 요청했는지 모두 로그로 남겨야 하는 요구사항
- etc...
- 이벤트 종류
- PrePersist
- PostPersist
- PostLoad - 2차 캐시에 저장되어 있어도 호출된다
- PreUpdate
- PostUpdate
- PreRemove
- PostRemove
- 이벤트 적용 위치
- Entity에 직접 적용
- 별도의 Listener 등록
- 기본 Listner 사용
- 이벤트 호출 순서
- 기본 Listener
- Parent Class Listener
- Listener
- Entity
Entity Graph: 연관 Entity들을 함께 조회할 때 사용
- 이거 전에 사용하려 해봤는데 Entity Graph 쫌만 복잡해져도 사용하기 어려워졌던 것 같음
- 실무에서 안 쓸 것 같은데 쓰는 곳 있나??
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels