▷
▶
■
→
[오늘의 계획]
1. 수업내용 복습
2. 7시반 스터디
3. 10시 세미 회의 (db마무리)
4. 틈날때 개념정리
[오늘의 공부]
■전달인자 vs 매개변수
전달인자(Argument)는 메소드 호출시에 전달되는 값
매개변수(Parameter)는 메소드에서 전달 받은 값
■serializble 인터페이스
public interface Serializable {
}
개발을 하다 보면 아래와 같은 경우가 존재합니다.
- 생성한 객체를 파일로 저장할 일이 있을수 있다
- 저장한 객체를 읽을 일이 생긴다
- 다른 서버에서 생성한 객체를 받을 일도 생길 수 있다
ㅡ 이럴 때 꼭 필요한 것이 Serializable. 우리가 만든 클래스가 파일에 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나 받을 수 있도록 하려면 반드시 이 인터페이스를 구현해야 한다.
ㅡ Serializblea 인터페이스를 구현하면 JVM에서는 해당 객체를 저장하거나, 다른 서버로 전송할 수 있도록 해준다
▶직렬화란?
자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터 변환하는 기술과, 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아우른다.
시스템적으로, JVM의 메모리에 상주되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태
▶ 찾아온 좋은 예시
<객체 저장>
import java.io.Serializable;
public class SerialDTO implements Serializable {
private String booName;
private int bookOrder;
private boolean bestSeller;
private long soldPerDay;
public SerialDTO(String booName, int bookOrder, boolean bestSeller, long soldPerDay) {
this.booName = booName;
this.bookOrder = bookOrder;
this.bestSeller = bestSeller;
this.soldPerDay = soldPerDay;
}
@Override
public String toString() {
return "SerialDTO{" +
"booName='" + booName + '\'' +
", bookOrder=" + bookOrder +
", bestSeller=" + bestSeller +
", soldPerDay=" + soldPerDay +
'}';
}
}
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class ManageObject {
public static void main(String[] args) {
ManageObject manage = new ManageObject();
String fullPath = "/Users/choejeong-gyun/Documents/test.md";
SerialDTO dto = new SerialDTO("God of Java", 1, true, 100);
manage.saveObject(fullPath, dto);
}
public void saveObject(String fullPath, SerialDTO dto) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(fullPath);
oos = new ObjectOutputStream(fos);
oos.writeObject(dto);
System.out.println("Write Success");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
<객체를 읽어오기>
import java.io.*;
public class ManageObject {
public static void main(String[] args) {
ManageObject manage = new ManageObject();
String fullPath = "/Users/choejeong-gyun/Documents/test.md";
manage.loadObject(fullPath);
}
public void loadObject(String fullPath) {
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(fullPath);
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
SerialDTO dto = (SerialDTO)obj;
System.out.println(dto);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
SerialDTO{booName='God of Java', bookOrder=1, bestSeller=true, soldPerDay=100}
출처)https://devlog-wjdrbs96.tistory.com/268
■자바빈즈(Java Beans)
ㅡ 자바로 작성된 소프트에어 컴포넌트. 데이터 표현을 목적으로 하는 자바 클래스
ㅡ <Java Beans Convention>을 지켜야 함
■Java Beans Convention
- 클래스는 인자가 없는 기본생성자를 갖는다.
- 클래스의 멤버변수는 프로퍼티라고 부르며, private 접근제한자를 갖는다.
- 클래스의 프로퍼티들은 getter/setter을 통해 접근할 수 있어야 한다.
- serializble 인터페이스를 구현한다
- 자바빈 클래스는 패키징 되어야 한다(package)
[스터디 결과]
국비지원 #국비교육 #국비 #초보개발자 #신입개발자 #컴퓨터학원 #자바 #JAVA #취업준비 #면접준비
'일기장 > 하루 정리' 카테고리의 다른 글
220117 [월] 스태미나 이슈 / 질문 정리 (0) | 2022.01.17 |
---|---|
220115 [토] (0) | 2022.01.15 |
220113 [목] onsubmit / scope / 표준액션태그 (0) | 2022.01.13 |
220112 [수] 휴강 / 'Head First Java' / 세미회의 / (0) | 2022.01.12 |
220110 [월] 질문정리 (0) | 2022.01.10 |