programing

물체에 수분을 공급한다는 것은 무슨 뜻입니까?

firstcheck 2022. 8. 3. 21:22
반응형

물체에 수분을 공급한다는 것은 무슨 뜻입니까?

물체에 수분을 공급하는 것에 대해 말하는 사람이 있다면, 그것은 무엇을 의미합니까?

웹에서 Hydrate라는 Java 프로젝트를 볼 수 있습니다. 이 프로젝트는 서로 다른 표현(RDMS에서 OOPS에서 XML로) 간에 데이터를 변환합니다.표현 간에 데이터를 변환하는 것이 개체 수화(object hydication)의 일반적인 의미입니까?저장된 표현에서 객체 계층을 재구성하는 것을 의미합니까?

수화란 물체에 데이터를 채우는 과정을 말한다.아직 하이드라이제이션되지 않은 객체가 인스턴스화되었으며 데이터가 있는 엔티티를 나타내지만 아직 데이터가 객체에 로드되지 않았습니다.이것은 퍼포먼스상의 이유로 행해지는 것입니다.

또한 수화라는 용어는 데이터베이스 또는 기타 데이터 소스에서 데이터를 로드하기 위한 계획을 논의할 때 사용됩니다.다음은 몇 가지 예입니다.

일부 필드만 로드했을 뿐 모든 필드는 로드하지 않은 경우 객체에 부분적으로 수분이 공급된다고 할 수 있습니다.이러한 다른 필드는 현재 작업에 필요하지 않으므로 이 작업을 수행할 수 있습니다.따라서 이 데이터를 사용하지 않을 때 대역폭과 CPU 사이클을 로드, 전송 및 설정할 필요가 없습니다.

또한 오브젝트가 인스턴스화되었을 때 수분을 공급하지 않고 오브젝트 내의 데이터에 액세스 했을 때에만 수분을 공급하지 않는ORM도 있습니다.이는 사용되지 않는 데이터를 로드하지 않도록 도와주는 방법 중 하나입니다.

수화물(hydrate)이라는 더 일반적인 용어와 관련하여

오브젝트를 하이드레이팅하는 것은 메모리 내에 존재하지만 아직 도메인 데이터("실제" 데이터)가 포함되지 않은 오브젝트를 가져와 도메인 데이터(데이터베이스, 네트워크, 파일 시스템 등)로 채우는 것입니다.

이 답변에 대한 Erick Robertson의 코멘트:

탈직렬화 == 인스턴스화 + 수화

성능 저하를 걱정할 필요가 없고 데이터 액세스 API 내부에 있는 성능 최적화를 디버깅하지 않는 경우 수화 처리를 명시적으로 할 필요가 없습니다.일반적으로 코드 쓰기를 줄일 수 있도록 역직렬화를 사용합니다.일부 데이터 액세스 API에서는 이 옵션이 제공되지 않습니다.이 경우 하이드레이션스텝을 직접 명시적으로 호출해야 합니다.

하이드레이션의 개념에 대한 자세한 내용은 에릭 로버트슨의 답변을 참조하십시오.

하이드레이트라고 하는 자바 프로젝트에 대해서

당신이 이 틀에 대해 구체적으로 물어봤기 때문에 알아봤습니다.

제가 아는 한, 이 프로젝트에서는 일반적인 의미에서 "hydraint"라는 단어를 사용하지 않은 것 같습니다.나는 제목에서 그것을 "직렬화"의 대략적인 동의어로 본다.위에서 설명한 바와 같이 이 사용법이 완전히 정확한 것은 아닙니다.

참조: http://en.wikipedia.org/wiki/Serialization

데이터 구조 또는 개체 상태를 나중에 동일한 또는 다른 시스템 환경에서 저장 및 재구성할 수 있는 형식으로 변환합니다.

Hydrate FAQ에서 직접 그들의 이름 뒤에 숨겨진 이유를 찾을 수는 없지만, 그들의 의도를 알 수 있는 단서를 얻었습니다."Hydrate"라는 이름을 선택한 이유는 라이브러리의 목적이 일반적인 사운드 유사 Hibernate 프레임워크와 비슷하기 때문이라고 생각합니다만, 이 라이브러리는 정반대의 워크플로우를 염두에 두고 설계되었습니다.

하이버네이트를 포함한 대부분의 ORM은 메모리 내 객체 모델 지향 접근 방식을 채택하고 있으며 데이터베이스는 이를 다시 고려합니다.Hydrate 라이브러리는 대신 데이터베이스 스키마 지향 접근방식을 채택하여 관계형 데이터 구조를 보존하고 프로그램이 그 위에서 보다 깔끔하게 작동할 수 있도록 합니다.

은유적으로 말하자면, 여전히 이 도서관의 이름에 관해:하이드레이트는 "사용할 수 있는 것을 만드는 것"과 같다.이것은 겨울잠과 비유적으로 반대되는 말로, "겨울을 위해 무언가를 치우는 것"에 가깝다.

내가 말할 수 있는 한, 도서관을 하이드레이트라고 이름 짓기로 한 결정은 일반적인 컴퓨터 프로그래밍 용어인 하이드레이트와는 관련이 없었다.

일반적인 컴퓨터 프로그래밍 용어 "hydrate"를 사용하는 경우 성능 최적화는 일반적으로 동기 부여(또는 기존 최적화의 디버깅)가 됩니다.라이브러리가 오브젝트에 데이터를 입력하는 시기와 방법을 세밀하게 제어할 수 있도록 지원하더라도 이름이나 라이브러리 기능의 주된 동기는 타이밍과 퍼포먼스가 아닌 것 같습니다.라이브러리는 엔드 투 엔드 매핑과 스키마 보존을 활성화하는 데 더 관심이 있는 것 같습니다.

Merlyn이 말한 것처럼 다소 불필요한 용어이지만, 내 경험상 그것은 단지 물체를 채우고 채우는 것을 의미하고 인스턴스화/생성하는 것을 의미하지 않기 때문에, 그것은 정확해야 할 때 유용한 단어이다.

이것은 꽤 오래된 질문이지만, 다음 용어의 의미에 대해서는 아직 혼란이 있는 것 같습니다.이것이 명확해졌으면 좋겠다.

하이드레이트

"데이터를 기다리는 개체는 수분을 공급받기를 기다리고 있습니다."와 같은 설명을 보면 혼란스럽고 오해의 소지가 있습니다.물체는 사물을 기다리지 않고, 수화물은 물체에 데이터를 채우는 행위일 뿐이다.

JavaScript를 예로 들어 보겠습니다.

const obj = {}; // empty object
const data = { foo: true, bar: true, baz: true };

// Hydrate "obj" with "data" 
Object.assign(obj, data); 
console.log(obj.foo); // true
console.log(obj.bar); // true
console.log(obj.baz); // true

가치를 더하는 모든 것obj수분을 공급하고 있습니다.그냥 쓰고 있어요.Object.assign()를 참조해 주세요.

"직렬화"와 "직렬화"라는 용어는 다른 답변에서도 언급되었으므로, 수화에서 이러한 개념의 의미를 명확히 하는 데 도움이 되는 예는 다음과 같다.

시리얼라이즈

console.log(JSON.stringify({ foo: true, bar: true, baz: true }));

역직렬화

console.log(JSON.parse('{"foo":true,"bar":true,"baz":true}'));

PHP에서는 생성자를 호출하는 이름으로 다음과 같이 새 클래스를 만들 수 있습니다.

require "A.php";
$className = "A";
$class = new \ReflectionClass($className);
$instance = $class->newInstanceWithoutConstructor();

다음으로 호출 세터(또는 퍼블릭아트리뷰트)를 하이드레이트 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6991135/what-does-it-mean-to-hydrate-an-object

반응형