본문 바로가기

언어/java

Serializable (직렬화) 란?

//transient 는 직렬화의 예외
class TransientTest implements Serializable{
	int a = 1;
    String b = "2";
    private transient String tt ="이건 제외가 된다.";
}

1. serialize 란?

직렬화는 기술이다.

이 기술은 데이터를 변환하는 기술이다.

JVM의 시스템 내부에서 사용되는 Object 혹은 Data는 자바 외에서는 쓸 수 없다.

이 때 자바 외부에서 이러한 데이터를 사용할 수 있게끔 byte 형태로 데이터를 변환하는 기술이

직렬화(serialize) 이다.

즉, jvm 메모리에 있는 개게 데이터를 byte 형태로 변환하는 기술이다.

 

2. Deserialize

역직렬화이다.

Object to Byte 인 기술이 직렬화라면 

Byte to Object 인 기술이 역직렬화이다.

 

3. transient

어떤 객체를 바꿀 때 직렬화에서 제외를 하고 싶은 필드에 붙이는 키워드이다.

class TransientTest implements serializable{
	private int a =1;
	private String  b ="2";
	private transient c ="얜 직렬화가 안되요";
}

 

이렇게 하면 json의 형태는 

{"a":"1",'b":"2"}

이런 형식이 될 것이다. 

transient 키워드가 붙은 c 는 json으로 변하지 않는다.

 

 

출처 및 참고

https://atoz-develop.tistory.com/entry/JAVA%EC%9D%98-%EA%B0%9D%EC%B2%B4-%EC%A7%81%EB%A0%AC%ED%99%94Serialization%EC%99%80-JSON-%EC%A7%81%EB%A0%AC%ED%99%94

'언어 > java' 카테고리의 다른 글

... -여러개의 파라미터를 받고 싶을 때  (0) 2021.11.15
URL 객체  (0) 2021.10.11
자바 스트림 collector  (0) 2021.01.11
기본 함수형 인터페이스  (0) 2021.01.08
람다식  (0) 2021.01.08