Quando alguém fala sobre hidratar um objeto, o que isso significa?
Eu vejo um projeto Java chamado Hydrate na Web que transforma dados entre diferentes representações (RDMS para OOPS em XML). Esse é o significado geral da hidratação do objeto; transformar dados entre representações? Poderia significar reconstruir uma hierarquia de objetos a partir de uma representação armazenada?
Respostas:
Com relação ao termo mais genérico hidrato
Hidratar um objeto é pegar um objeto que existe na memória, que ainda não contém dados de domínio (dados "reais") e preenchê-lo com dados de domínio (como de um banco de dados, da rede ou de um arquivo sistema).
Dos comentários de Erick Robertson sobre esta resposta:
Se você não precisa se preocupar com um desempenho empolgante e não está depurando otimizações de desempenho que estão nas internas de uma API de acesso a dados, provavelmente não precisa lidar com a hidratação explicitamente. Você normalmente usaria desserialização para poder escrever menos código. Algumas APIs de acesso a dados não oferecem essa opção e, nesses casos, você também deve chamar explicitamente a etapa de hidratação.
Para um pouco mais de detalhes sobre o conceito de hidratação, veja a resposta de Erick Robertson sobre essa mesma pergunta.
Com relação ao projeto Java chamado hydrate
Você perguntou especificamente sobre essa estrutura, então eu a examinei.
O melhor que posso dizer, não acho que este projeto tenha usado a palavra "hidrato" em um sentido muito genérico. Eu vejo o seu uso no título como um sinônimo aproximado de "serialização". Como explicado acima, esse uso não é totalmente preciso:
Veja: http://en.wikipedia.org/wiki/Serialization
Não consigo encontrar o motivo por trás do nome deles diretamente no FAQ sobre hidratos , mas tenho pistas sobre a intenção deles. Eu acho que eles escolheram o nome "Hydrate" porque o objetivo da biblioteca é semelhante à estrutura popular do Hibernate , semelhante ao som , mas foi projetada com o fluxo de trabalho exatamente oposto em mente.
A maioria dos ORMs, incluindo o Hibernate, adota uma abordagem orientada ao modelo de objeto na memória, com o banco de dados tendo uma segunda consideração. Em vez disso, a biblioteca Hydrate adota uma abordagem orientada ao esquema de banco de dados, preservando suas estruturas de dados relacionais e deixando o programa trabalhar sobre elas de maneira mais limpa.
Metaforicamente falando, ainda com relação ao nome desta biblioteca: Hidrato é como "preparar algo para ser usado" (como reidratar os alimentos secos ). É um oposto metafórico do Hibernate , que é mais como "guardar algo para o inverno" (como Animal Hibernation ).
A decisão de nomear a biblioteca Hydrate, tanto quanto posso dizer, não estava relacionada ao termo genérico de programação de computadores "hydrate".
Ao usar o termo genérico de programação de computador "hidratar", as otimizações de desempenho geralmente são a motivação (ou depuração das otimizações existentes). Mesmo que a biblioteca suporte controle granular sobre quando e como os objetos são preenchidos com dados, o tempo e o desempenho não parecem ser a principal motivação para o nome ou a funcionalidade da biblioteca. A biblioteca parece mais preocupada em ativar o mapeamento de ponta a ponta e a preservação de esquema.
fonte
deserialization == instantiation + hydration
@foo
não é necessário ao responder ao autor da postagem.Hidratação refere-se ao processo de preenchimento de um objeto com dados. Um objeto que ainda não foi hidratado foi instanciado e representa uma entidade que possui dados, mas os dados ainda não foram carregados no objeto. Isso é feito por motivos de desempenho.
Além disso, o termo hidratação é usado ao discutir planos para carregar dados de bancos de dados ou outras fontes de dados. aqui estão alguns exemplos:
Você poderia dizer que um objeto está parcialmente hidratado quando você carregou apenas alguns dos campos, mas não todos. Isso pode ser feito porque esses outros campos não são necessários para suas operações atuais. Portanto, não há razão para desperdiçar largura de banda e ciclos de CPU carregando, transferindo e configurando esses dados quando não serão utilizados.
Além disso, existem alguns ORMs, como o Doctrine, que não hidratam objetos quando são instanciados, mas apenas quando os dados são acessados nesse objeto. Este é um método que ajuda a não carregar dados que não serão usados.
fonte
Embora seja vernáculo um pouco redundante, como Merlyn mencionou, na minha experiência, refere-se apenas ao preenchimento / preenchimento de um objeto, não à instanciação / criação, por isso é uma palavra útil quando você precisa ser preciso.
fonte
deserialization == instantiation + hydration
).Essa é uma pergunta bastante antiga, mas parece que ainda há confusão sobre o significado dos termos a seguir. Felizmente, isso vai desambiguar.
Hidrato
Quando você vê descrições que dizem coisas como "um objeto que está aguardando dados, está esperando para ser hidratado", isso é confuso e enganoso. Os objetos não esperam as coisas, e a hidratação é apenas o ato de preencher um objeto com dados.
Usando JavaScript como o exemplo:
Tudo o que agrega valores
obj
é "hidratá-lo". Estou apenas usandoObject.assign()
neste exemplo.Como os termos "serializar" e "desserializar" também foram mencionados em outras respostas, aqui estão exemplos para ajudar a desambiguar o significado desses conceitos da hidratação:
Serializar
Desserializar
fonte