반응형
자바에서 사용하는 직렬화의 의미는
- 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술
- 시스템적인 면에서는 JVM 메모리에 상주(스택/힙)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술
- 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태(역직렬화)
를 말한다.
사용하는 법은 다음과 같다.
@Data @ToString @Builder @AllArgsConstructor @NoArgsConstructor public class Dto implements Serializable{ private String id; private String name; } |
이렇게 implements Serializable 를 하면서 dto 정의를 하고
Dto dto = new Dto("1","name"); byte[] serializeDto; try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { try(ObjectOutputStream oos = new ObjectOutputStream(baos)) { oos.writeObject(member); serializeDto = baos.toByteArray(); } } // base64로 인코딩한 문자열 String base64Dto = Base64.getEncoder().encodeToString(serializeDto); |
그리고 디코딩 관련해서는 아래와 같다.
byte[] deserializedDto = Base64.getDecoder().decode(base64Dto); try(ByteArrayInputStream bais = new ByteArrayInputStream(deserializedDto)) { try(ObjectInputStream ois = new ObjectInputStream(bais)) { Object objectDto = ois.readObject(); Dto dto = (Dto) objectDto; System.out.println(dto); } } |
반응형
'IT > Java' 카테고리의 다른 글
Entity, DTO, VO 차이 (47) | 2022.08.18 |
---|---|
JPA, Hibernate, Spring Data JPA (48) | 2022.08.17 |
delay 설정하기 (Thread.sleep) (45) | 2022.08.13 |
gson 에 대해서 (54) | 2022.08.12 |
JSON Array 처리중 단일 데이터의 경우 문제(22.08.10) (80) | 2022.08.09 |
댓글