Java
Java transient
곰돌이생각해보니
2021. 7. 23. 23:51
Java transient 란?
transient 는 Serialize(직렬화 참고 : https://medium.com/@lunay0ung/basics-%EC%A7%81%EB%A0%AC%ED%99%94-serialization-%EB%9E%80-feat-java-2f3eb11e9a8 )
하는 과정에 제외하고 싶은 경우 선언하는 키워드다.
왜 필요한가?
- 패스워드와 같은 보안정보가 직렬화과정에서 제외하고 싶은 경우에 적용
- 다양한 이유로 데이터를 전송하고 싶지 않을 때 선언한다.
예시 )
Model
class Member implements Serializable {
private String name;
private String eamil;
private int age;
public Member(String name, String email, int age) {
this.name = name;
this.email = email;
this.age = age;
}
@Override
public String toString() {
return String.format("Member{name='%s', email='%s', age='%s'}", name, email, age);
}
}
Main
public static void main(String[] args) throws IOExcption, ClassNotFoundException {
Member member = new Member("곰돌", "deliverykim@baemin.com", 25); //Model 객체
String serialData = serializeTest(member); // 직렬화
deSerializeTest(serialData);
}
👉 Result
그러나 name 필드에 transient keyword를 추가하면? 🤔🤔🤔
private transient String name;
private String eamil;
private int age;
👉 Result
주의해야할 점
- 적용하는 데이터에 대한 이해
- 실제로 필요가 없는지에 대한 고려 (직렬화를 하지 않을 데이터가)
- 데이터를 제외했을 때 서비스 장애에 이상이 없는지에 대한 고려