2020-11-09 TIL

1 minute read

chain of responsibility

  • 링크드리스트 형식으로

퍼시스턴스 프레임워크

  • 이전 방식 : 자바코드 -> JDBC API에 따라서 직접 호출 -> CBMS 와 소통
  • 퍼시스턴스 프레임워크 적용 후 :
    • 자바코드 -> 퍼시스턴스 프레임워크 -> JDBC API -> DBMS
    • JDBC 프로그래밍 캡슐화
      • JDBC API를 호출하는 자바 코드를 클래스로 만들어 제공하는 것을 의미한다.
  • 방법 :
    • SQL Mapper
      • 자바 코드 ->(SQL ID 지정, DBMS에 맞춰서 작성해야 한다 - DBMS에 종속된다 - DBMS에 최적화를 시킨다 - DBMS의 성능을 극한으로 끌어올릴 수 있다) -> 프레임워크(SQL) -> JDBC API -> DBMS
      • 테이블에 대해 질의한다.
    • OR Mapper
      • 자바코드 -> (프레임워크 전용 질의어 ex. 하이버네이트 SQL - DBMS에 상관없이 사용할 수 있다 - DBMS에 종속되지 않는다 - 성능 극대화되지 않음) -> 프레임워크 -> JDBC API
      • 객체에 대해 질의한다.

SQL Mapper와 OR Mapper

SQL Mapper

  • 자바 소스 파일을 자바 코드와 SQL로 분리하여 관리한다
    • 자바 소스 -> 자바 코드 -> SQL 매퍼 -> SQL 매퍼 + JDBC API
    • 자바 소스 -> SQL <- SQL 매퍼 + JDBC API

OR Mapper

  • 자바 소스 -> 자바 코드 + 전용 질의어 -> call -> OR 매퍼 -> 전용 질의어 -> DB 별 Adater(전용 질의어를 DBMS에서 인식할 수 있는 SQL로 변환) -> DBMS
  • 해당 Adapter 가 없다면 실행 불가능
  • 코드가 특정 OR 매퍼에 종속된다.

마이바티스?

  • https://mybatis.org/mybatis-3/ko/index.html
  • 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.

마이바티스 설정

  • search.maven.org
    • 마이바티스
    • implementation ‘org.mybatis:mybatis:3.5.6’
  • 해당 폴더에서 gradle eclipse

select 결과를 자바 객체에 저장하기

  • DB 컬럼 이름과 같은 자바 프로퍼티에 값을 저장
    • setter 호출하는 것

자바 프로퍼티

  • 프로퍼티 이름
    • setBoardName() {}
      • set은 삭제하고 Board의 B는 소문자로
      • -> boardName이 이름이 된다.
class Board {
    int no; // <- 필드
    int getBoardNo() {} // <- read/writer 프로퍼티 = 세터/게터
    void setBoardNo() {} // <- read/writer 프로퍼티 = 세터/게터
    String name; // <- 필드
    String getWriter() {} // read only 프로퍼티
}

OGNL 표기법

  • Object Graph navigation Language
  • b.getWriter().getAddr().getBaseAddr(); -> b.writer.addr.baseAddr;

Categories:

Updated: