1. JPA 소개

1. SQL을 직접 다룰 때 발생하는 문제점

  • 반복 작업
    • CRUD 각각의 기능에 해당하는 SQL문을 작성, 반복
    • 객체를 관계형 DB에 저장하기 위해 CRUD를 구현하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야 함(반복)
  • SQL 의존적인 개발
    • 기존 구현 내용에 추가적인 요구사항을 반영할 경우 CRUD 모든 SQL문을 업데이트 해야 함
    • DAO(Data Access Object)의 계층 분할의 어려움
      • 아래 코드처럼 DAO의 메소드가 어떤 쿼리를 날리는지 일일이 확인해보면서 개발을 해야 함(의존)
      •   public class MemberDAO{
              public Member find(String memberID){
                  // SELECT MEMBER_ID, TEL FROM MEMBER M 
              }
              public Member findWithTeam(String memberID){
                  // SELECT MEMBER_ID, TEL, TEAM FROM MEMBER
              }
          }
        
    • 정리하면?
      • 진정한 의미의 계층 분할이 어려움 (애플리케이션과 DB의 계층 분할)
      • 엔티티를 신뢰할 수 없음 (DAO의 SQL을 하나 하나 열어봐야 하는 문제)
      • SQL에 의존적인 개발을 피하기 어려움

Continue reading

3. Process

프로세스의 개념

  • 실행중인 프로그램
  • 프로세스의 문맥(context)
    • CPU 수행 상태를 나타내는 하드웨어 문맥
      • Program counter
      • registers
    • 프로세스의 주소 공간
      • code, data, stack
    • 프로세스 관련 커널 자료 구조
      • PCB(Process Control Block) - 커널 주소공간(data)에 있음
      • Kernel stack - 프로세스별 kernel stack

Continue reading

2. System Structure & Program Execution

컴퓨터 시스템 구조

  • 1
    • mode bit : 실행중인게 운영체제인지, 유저 프로그램인지 구분
    • timer : 특정 프로그램이 CPU를 독점하지 못하게 timer 값을 설정한 다음에 CPU 할당
      • 운영체제는 CPU를 선점할 수 없음.. CPU가 자원을 할당할 때 설정하는 timer로 switching 되는 것..
    • interrupt line : 매 instruction이 끝나면 interrupt line 확인
      • interrupt가 들어오면 CPU가 운영체제로 넘어감

Continue reading

1. 운영체제 (Introduction to Operating Systems)

운영체제란?

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
  • 좁은의미(커널) : 운영체제의 핵심 부분으로 메모리에 상주하는 부분
  • 넓은의미 : 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

운영체제의 목적

  • 컴퓨터 시스템의 자원을 효율적으로 관리
    • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
      • 사용자간의 형평성 있는 자원 분배
      • 주어진 자원으로 최대한의 성능
    • 사용자 및 운영체제 자신의 보호
    • 프로세스, 파일, 메시지 등을 관리
  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
    • 운영체제는 동시 사용자/프로그램들이 각각 독자적으로 컴퓨터에서 수행되는 것 같은 환상을 제공
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

Continue reading

Pagination


© 2020.02. by blupine