2014-01-07 1 views
2

나는이 링크를 통해 갔지만 나는 설득력있는 대답을 찾고있다. 방문 http://www.coderanch.com/t/270170/java-programmer-SCJP/certification/Difference-serialization-persistence지속성과 직렬화의 차이점은 무엇입니까?

+1

연속화는 지속성의 유형입니다 ... – MadProgrammer

+0

객체의 지속 상태가 직렬화 - 직렬화와 어떻게 다른가요? – Dhruv

+2

나는 당신의 용어를 혼란스럽게 생각합니다. 지속성은 개념 또는 아이디어이며 직렬화는이 아이디어를 구현 한 것입니다. 직렬화는 객체를 지속시키는 행위이고, deserialisation은 객체를 메모리에 다시 영구 상태로 다시로드하는 행위입니다 ... – MadProgrammer

답변

2

직렬화는 개체를 다른 표현으로 변환하는 프로세스입니다 (xml과 같은 다른 형식으로 직렬화 할 수 있지만 이진 형식 일 수 있음). 해당 직렬화 된 형식의 객체를 지속하여 읽고 (비 직렬화) 객체를 복원 할 수 있습니다. 직렬화는 프로세스/머신 (예 : RMI)에서 Java 객체를 전송하기위한 메커니즘으로도 사용됩니다. 직렬화는 지속성이 아니지만 지속성은 사용할 수있는 한 가지 방법입니다.

2

간단한 답 : 직렬화는 객체의 표현을 다른 것으로 (주로 통신 메커니즘을 통해 전송하기위한 목적으로) 변경하는 과정이며, 지속성은 지속성을 목표로합니다 (예, 동일한 단어입니다) 개체 상태 (나중에 검색하기 위해)를 물리적 저장소에 저장합니다.

두 주제는 모두 강하게 관련되어 있습니다. 대부분의 지속성 계층은 객체 직렬화 및 비 직렬화에 의존하며 바이너리 덤프 및 객체 복원을 제공하지는 못합니다. 흥미롭게도 대부분의 개발자들은 지속성 레이어를 개발하는 것이 더 중요하다는 점에서 다소 지루한 작업으로 직렬화/직렬화 프로세스를 구현하는 것을 보았습니다. 글쎄, 분명히, 두 번째는 더 복잡하고 이전 하나는 종종 그것의 하위 작업입니다.

+0

누군가가 "지속성은 런타임 세션이 끝나고 다시 시작된 후 개체의 상태를 유지하는 기능입니다."라고 기록했습니다. 그 링크에 맞습니까? – Dhruv

+0

네, 꽤 많은 것을 암시 하듯이 설득력이 없지만 꽤 좋습니다. 그래서 정의마다 런타임 세션이 될 것입니까? 프로세스 시작부터 종료까지의 기간? 그렇다면 확실히 맞는 것입니다. – Peter

2

지속성 - 상태를 사이에서 유지하도록 허용하는 메커니즘 응용 프로그램 실행

아마도 데이터베이스, 어쩌면 파일, 때로는 캐시, 경우에 따라 매우 이상한 구름 같은 것입니다.

- 나중에 복구하기 위해 개체를 직렬 형식으로 표시 할 수있는 방법입니다.

자주 사용되는 개체입니다.

+1

"직렬 텍스트 형식"은 Java에 정확히 적용 할 수 없습니다. 기본 직렬화 메커니즘은 바이너리입니다. – alf

+0

"직렬 텍스트 형식으로 객체를 나타내는 방법"은 XML 직렬화와 같은 경우에 확실히 적용되지만 Java에서의 기본값은 바이너리입니다. 인간이 읽을 필요가 없습니다. –

+0

* text *에 대한 참조 - 좋은 지적. – OldCurmudgeon

관련 문제