Supersett
개발자의 하루
Supersett
Blockchain Dev
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프론트
    • 회사생활
    • 블록체인
    • 프로젝트
      • 창업 프로젝트 (DRF + AWS)
      • Spring 프로젝트
    • [중앙대]멋쟁이 사자처럼
    • 기술서적
    • Problem Solving
      • 알고리즘
    • 일기장
      • 하루 정리
      • 삽질 일기
      • 조급할 때 눌러보기

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 구글소셜로그인
  • 멋쟁이사자처럼 중앙대
  • 컴퓨터학원
  • 디프만16기
  • 국비
  • DEPROMEET
  • 프로젝트
  • 멋사 중앙대
  • java
  • Luniverse
  • Multichain API
  • Near Explorer
  • 멋쟁이 사자처럼 서류
  • 취업준비
  • 해커톤
  • 니어프로토콜
  • 글리치해커톤
  • 멋쟁이 사자처럼
  • 초보개발자
  • 비트코인
  • 블록체인정보가공
  • 멋쟁이 사자처럼 면접
  • Near Scan
  • 블록체인 서버설계
  • 신입개발자
  • 국비지원
  • 자바스크립트
  • 국비교육
  • 면접준비

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Supersett
일기장/하루 정리

220114 [금] 빈 / serializble / short coding?!

220114 [금] 빈 / serializble / short coding?!
일기장/하루 정리

220114 [금] 빈 / serializble / short coding?!

2022. 1. 14. 10:57

▷
▶
■
→


[오늘의 계획]
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
    '일기장/하루 정리' 카테고리의 다른 글
    • 220117 [월] 스태미나 이슈 / 질문 정리
    • 220115 [토]
    • 220113 [목] onsubmit / scope / 표준액션태그
    • 220112 [수] 휴강 / 'Head First Java' / 세미회의 /
    Supersett
    Supersett
    하루를 돌아보고 공부한 티를 내기 위해 블로그를 만들었습니다.

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.