ki-sd 님의 블로그
[2026-04-08] 스트림(Stream) 심화와 객체 직렬화(Serialization)를 이용한 회원 CRUD 본문
데이터의 흐름을 제어하는 I/O 스트림의 깊은 원리를 파악하고, 객체 자체를 파일로 영구 저장하는 고급 기술을 습득했다.
1. 바이트 스트림과 문자 스트림의 분리
- 그림, 오디오, 영상 등 모든 종류의 데이터를 1바이트씩 처리하는 바이트 기반 스트림(InputStream, OutputStream)과, 텍스트 데이터의 한글 깨짐을 방지하기 위해 2바이트 단위로 묶어 처리하는 문자 기반 스트림(Reader, Writer)의 용도를 정확히 구분했다.
- 성능 향상을 위해 내부적으로 메모리 버퍼를 사용하는 보조 스트림(BufferedReader, BufferedWriter)을 덧붙여(Chaining), 디스크 접근 횟수를 줄이고 입출력 속도를 획기적으로 개선하는 아키텍처를 실습했다.
2. 객체 직렬화(Object Serialization)
- 힙 메모리에 존재하는 객체는 프로그램이 종료되면 사라진다. 이 객체의 상태(필드 값들)를 연속적인 바이트 데이터로 변환하여 파일이나 네트워크로 전송할 수 있게 만드는 기술이 '직렬화'다.
- ObjectOutputStream을 통해 객체를 .txt 파일에 기록하고, ObjectInputStream으로 다시 메모리에 복원(역직렬화)하는 과정을 익혔다. 직렬화 대상 객체는 반드시 Serializable 인터페이스를 구현해야 한다는 시스템 규약을 확인했다.
- 이를 응용해 파일 기반의 회원 관리 CRUD(Create, Read, Update, Delete) 시스템을 완성하며 데이터 영속성의 실무적 흐름을 구축했다.
'JavaStudy' 카테고리의 다른 글
| [2026-04-10] Socket 통신과 멀티 쓰레드를 활용한 실시간 다중 채팅 서버 (0) | 2026.04.17 |
|---|---|
| [2026-04-09] 내부 클래스, 멀티 쓰레드(Multi-Thread), 그리고 네트워크 기초 (1) | 2026.04.17 |
| [2026-04-07] 자바 I/O의 시작 - File 클래스와 시스템 제어 (0) | 2026.04.17 |
| [2026-04-06] 람다식(Lambda)과 스트림(Stream) API를 통한 함수형 프로그래밍 (0) | 2026.04.17 |
| [2026-04-03] Set과 Map의 논리적 구조와 중복 제어 (0) | 2026.04.17 |
