2012-01-28 3 views
0

저는 고객 및 다른 계정이있는 단순한 은행과 같은 일을 처리하고 있습니다. 이제 고객 객체와 계정 객체를 파일로 저장하는 작업을 개발해야합니다. 나는 그것에 대해 약간 읽었고 ObjectOutputStream과 ObjectInputStream을 사용할 것이다.파일에 개체 저장에 대한 지침

고객 목록이라는 고객 목록과 고객 목록에있는 계정 목록이라는 고객 목록에있는 모든 고객 객체 (accountsList)가 있기 때문에 홀 arraylist를 저장해야하는지, 아니면 모든 객체를 별도로 저장해야하는지 궁금합니다. ?

고객 오브젝트를로드 할 때, 내가 알기 전까지 액세스 할 수 있도록 고객 오브젝트를 다시 arraylist에 놓아야합니까? 이해하기 쉽고 이해하기 쉬운 솔루션을 찾고 있습니다. 도움을 preciate! 감사!

아마도 루프를 만들고 배열 목록에서 각 개체를 선택하여 개체로 저장할 수 있습니다. 그리고 나서로드 할 때 다시 루프를 만들어로드하고 배열 목록에 추가하십시오!

답변

1

java.io.Serializable을 구현하는 한 모든 개체를 저장 (전문 용어 직렬화) 할 수 있습니다. ArrayListSerializable을 구현하므로 고객 및 계정 객체가 구현하는 경우 Serializable 인터페이스도 구현해도 문제가되지 않습니다. ArrayList에와 직렬화의

예 : http://www.javabeginner.com/uncategorized/java-serialization

참고 : 장기 (생산)를 저장하는 더 좋은 방법은 데이터가 DBMS (RDBMS 또는 NoSQL에 DB) 시스템을 사용하는 것입니다.

+0

좋아, 기본 클래스에서 확장 된 하위 클래스 (savingsAccount 및 CreditAccount)에 직렬화 할 수있는 구현을 사용해야합니까? 아니면 그냥 계정 클래스에 가입하는 것으로 충분합니까? –

+0

@ 3D-kreativ 계정에 대해 지정하는 것으로 충분합니다. –

+0

좋아요, 다음과 같이 작성하십시오 : outObjectStream.writeObject (nameOfArrayList) ?? 그런 다음로드하면 현재로드 된 컨텐츠를 현재 arraylist로 바꾸려면 어떻게해야합니까? –

1

개별 개체보다 전체 arraylist를 저장하고로드하는 것이 더 쉽습니다. 어느 쪽이든 당신은 당신의 객체가 직렬화 가능함을 확인해야한다.

숙제가 아닌 설정에서는 영구 응용 프로그램 상태가 모두 포함 된 별도의 개체에 계정 목록이 저장되어있을 수 있습니다. 그런 다음 시작시 상태를 읽고 종료 할 때 저장합니다. 클래스를 직렬 버전 uid로 정의해야합니다. 구조를 변경하면 이전 버전과 호환되지 않는 새 버전을 표시 할 수 있습니다.

마지막으로 은행 데이터는 신뢰할 수있는 데이터베이스에 저장해야합니다. 직렬화 메커니즘은 통신 프로토콜과 같은 단기 저장 또는 브라우저 기록이나 사용자 기본 설정과 같은 상대적으로 중요하지 않은 데이터를위한 것입니다. 장기 보관을 위해이 클래스를 사용하면 사용한 클래스를 수정할 수 없거나 데이터 손실의 위험이 있습니다.

+0

OK, 다음과 같이 작성하십시오 : outObjectStream.writeObject (nameOfArrayList) ?? –

+0

데이터베이스가 더 좋지만이 과정에는 포함되지 않습니다. –

+0

예, 그렇게 할 수 있습니다. 시도해 보았 니? – Joni

관련 문제