Nice programing

용어 설명 : 엔티티 "수화": DB에서 속성 가져 오기

nicepro 2020. 11. 20. 09:38
반응형

용어 설명 : 엔티티 "수화": DB에서 속성 가져 오기


ORM / 엔티티의 지연 로딩과 관련하여 "수화"라는 용어에 대한 이해는 다음과 같습니다.

"수화"는 지연로드를 사용하여 가져온 엔티티의 이전에 채워지지 않은 속성의 일부 또는 전체를 채우는 프로세스를 설명합니다.

예 : 클래스 Author는 데이터베이스에서로드됩니다.

@Entity
class Author
{
     @Id
     long id;
     List<Book> books;
}

처음에는 books컬렉션이 채워지지 않습니다.

books데이터베이스 에서 컬렉션 을로드하는 프로세스를 컬렉션 "수화"라고합니다.

이 정의가 정확하고 일반적인 장소라는 용어입니까? 이 프로세스에 사용해야하는 또 다른 일반적인 용어가 있습니까?


Hydrate는 db (특히 Hibernate에서)에서 인스턴스화 된 (그러나 비어있는) value-object / model을 채우는 용어로 시작되었습니다.

BizTalk와 같은 다양한 기타 ORM 및 도구는 Hydrate 및 기타 관련 용어를 사용합니다. 예를 들어 BizTalk는 Dehydrated라는 용어를 사용하여 인스턴스를 사용할 수 있지만 아직 채워지지 않았 음을 의미합니다.

개인적으로 저는 중복 된 용어의 정밀 검사를 싫어합니다. 채워지 는 것은 언어를 재창조하지 않고도 같은 의미입니다. 그것은 아무것도 추가하지 않고 혼란을 초래합니다 (재발 명 된 용어를 만나는 것에 대한 일반적인 첫 번째 생각 : 어떻게 든 다르고 마법 적인가? ).

이 스타일의 언어, 특히 Dehydrated 의 BizTalk 확장 은 중복됩니다. 나는 사람들이 어떻게 말해야하는지, 비워 두거나 지우는 것을 잊지 않았을 것이라고 생각한다 .

Hydrated 및 관련 은유는 본질적으로 경쟁 제품과 Hibernate를 구별하기 위해 고안된 마케팅 도구입니다.

이 시점에서 Hibernate 및 기타 ORM 제품은 수년 동안 이러한 용어를 사용해 왔으므로 Hydrate (및 Dehydrate)는 계속 유지됩니다.


Hibernate 명명법에서 수화는 JDBC ResultSet이 원시 값의 배열로 변환되는 경우입니다 .

final Object[] values = persister.hydrate(
    rs, id, object,
    rootPersister, cols, eagerPropertyFetch, session
);

수화 된 상태는 로딩 시간 엔티티 스냅 샷을 캡슐화 EntityEntry 오브젝트 로 현재 실행중인 Persistence Context에 저장됩니다 . 수화 된 상태는 다음에 의해 사용됩니다.

  • 로딩 시간 스냅 샷과 현재 엔티티 데이터를 비교하는 기본 더티 검사 메커니즘
  • 로드 시간 엔티티 스냅 샷에서 캐시 항목이 빌드 된 두 번째 레벨 캐시

역 연산을 dehydration 이라고 하며 엔터티 상태를 SQL INSERT 또는 UPDATE 문으로 복사합니다.


수화는 느슨한 용어입니다. 우리 회사에서는 전체 개체 그래프의 모든 개체 속성을로드하는 용어로 "수화"를 사용합니다. 다음은 다양한 수준의 수화에 대해 설명 하는 게시물 입니다 (다시 말하지만 이는 최대 절전 모드에서 사용하는 일반적인 사용법입니다).


ORM의 맥락에서 '하이드레이트 (들)'라는 용어는 단순히 프레임 워크가 객체를 제공한다는 의미라고 생각합니다. 따라서 데이터가 저장소에서 가져온 후 ORM에 의해 개체가 '수화'됩니다. 이 용어는 ORM 프레임 워크가 상점에 표시되는 개체 / 그래프를 제공 할 때마다 적용될 수 있습니다.


수화라는 용어는 최근에로드 된 개체의 필드를 설정하는 프로세스를 나타 내기 위해 최대 절전 모드 라이브러리의 내장에서 광범위하게 사용되며 실제로 개체 그래프 인구와 관련이 있습니다.
그러나 지연 로딩의 개념과는 다릅니다. 즉, 사용자에게 절반으로 채워진 객체를 제공하고 나머지는 요청시로드되도록합니다.
수분 공급은 항상 게으르게 또는 열심히 수행되며 최대 절전 모드입니다.
지연 로딩은 편의를위한 것입니다.

최대 절전 모드를 선택한 조직의 이름으로 바꿉니다.


Hydration쿼리 결과를 반환 하는 방법의미하는 일반적인 ORM 도메인 용어 입니다. 그것은 과정도 아니고 동사도 아니고 발생하는 행위 나 사건이 아니라 명사입니다. 따라서 수화수화 를 사용하는 것을 의미 할 수 있습니다. 즉, 특정 방법을 사용하는 것 외에 다른 것은없고 그 자체로는 아무것도 가져 오지 않으므로 절대 사용해서는 안됩니다 . 특정 수화는 개체를 인스턴스화하고 참조를 반환하기 전에 채울 수 있지만 일반적으로 수화는 채우기를 의미하지는 않습니다. 다른 수분 공급은 다른 구조를 반환합니다.

  • 특이 스칼라
  • 스칼라 배열
  • 배열의 배열
  • 객체 배열
  • 개체 수집 스칼라
  • 객체 수집 배열
  • 다른 개체를 수집하는 개체
  • ...더

It's an ORM implementation detail. Some ORMs provide multiple hydrations and you can choose one by passing an argument to query builder, some don't give you that control and replace it by convention trying to be smart about it which usually leads to false assumptions.

참고URL : https://stackoverflow.com/questions/4929243/clarifying-terminology-hydrating-an-entity-fetching-properties-from-the-db

반응형