1. Data - (Annotation)

  1. [설명]
    1. Class의 모든 Field에 대한 getter 및 setter 메서드, toString() 및 equals() 및 hashCode() 메서드를 생성해주는 역할을 합니다
  2. [기능]
    1. @ToString
      1. Class의 toString() 메서드를 생성해준다는 의미입니다
    2. @EqualsAndHashCode
      1. Class에 대한 equals() 및 hashCode() 메서드를 생성해준다는 의미입니다
    3. @Getter
      1. Class의 모든 Field에 대한 getter 메서드를 생성해준다는 의미입니다
    4. @Setter
      1. Class의 모든 Field에 대한 setter 메서드를 생성해준다는 의미입니다
    5. @NoArgsConstructor
      1. Class에 대한 인자가 없는 생성자를 생성해준다는 의미입니다
    6. @RequiredArgsConstructor
      1. Class의 각 final field와 null이 아닌 field에 대해 하나의 매개변수가 있는 생성자를 생성해준다는 의미입니다
    7. @AllArgsConstructor
      1. Class의 각 Field에 대해 하나의 매개변수가 있는 생성자를 생성해준다는 의미입니다
  3. @Builder
    1. [설명]
      1. Class에 대한 빌더 패턴을 생성해준다는 의미입니다
    2. [기능]
      1. @NoArgsConstructor
        1. Class에 대한 인자가 없는 생성자를 생성해준다는 의미입니다
      2. @RequiredArgsConstructor
        1. Class의 각 final field와 null이 아닌 field에 대해 하나의 매개변수가 있는 생성자를 생성해준다는 의미입니다
  4. @Value
    1. 최종 Field, getter 메서드, toString() 및 equals() 및 hashCode() 메서드가 있는 불변 class를 생성해준다는 의미입니다
    2. 설정파일(.properties, .yml)에 설정한 내용을 주입시켜주는 어노테이션을 말합니다

2. Log - (Annotation)

  1. Log란?
    1. 프로그램에서 로그를 작성해두면, 어떤 동작을 하고 있는지, 어느 부분에서 에러가 났는지 쉽게 파악할 수 있습니다
    2. 특히 오류가 발생하면 어떤 함수 호출에서 문제가 있었는지, 에러 메세지가 무엇인지, 어떤 값이 들어갔는지 등을 알 수 있어 훨씬 더 빠르게 파악이 가능합니다
    3. 내장 java 로깅 framework를 사용하여 class에 대한 로거 인스턴스를 생성해준다는 의미입니다
  2. [종류]
    1. Slf4j
      1. [설명]
        1. SLF4J 로깅 framework를 사용하여 class에 대한 로거 인스턴스를 생성해준다는 의미입니다
        2. Simple Logging Facade for Java의 약자로 로깅 추상화 라이브러리 입니다
        3. 로깅하는 일을 직접하지 않고 로깅 구현체를 찾아서 실제 로깅 라이브러리를 찾아서 사용할 수 있게 합니다
      2. [모듈]
        1. API
          1. 인터페이스로서 이것 혼자 사용을 할 수 가 없으며 사용하기 위해서 바인딩 작업이 필요합니다
        2. Binding
          1. API 구현체와 이어주는 어댑터 역할을 하며, 여러 바인딩 중 반드시 하나만 사용해야 합니다
        3. Bridge
          1. 레거시를 위해 필요한 모듈을 말합니다
      3. [로그레벨]
        1. FATAL
          1. 매우 심각한 에러가 났을 때입니다
        2. ERROR
          1. 의도하지 않은 에러가 발생했을 때를 말합니다
        3. WARN
          1. 에러는 아니지만 잠재적 가능성이 있는 경우를 말합니다
        4. INFO
          1. 요구사항에 따라 시스템 동작을 보여줄 때를 말합니다
        5. DEBUG
          1. INFO레벨보다 상세히 나타낼때 사용됨을 말합니다
    2. Log4j
      1. [설명]
        1. Log4j 로깅 framework를 사용하여 class에 대한 로거 인스턴스를 생성해 준다는 의미입니다
      2. [3가지 컴포넌트]
        1. Logger
          1. 프로그램으로부터 로깅정보를 받아온다는 의미입니다(feat. 데이터를 기록하는 역할)
        2. Appender
          1. 로깅정보를 여러가지 장치로 내보내준다는 의미입니다 (feat. 어디에 기록할 것인가 [Ex. file, console, jdbc, smtp등])
        3. Layout
          1. 로깅 정보를 포맷팅한다는 의미입니다 (feat. 어떤 스타일로 기록할지를 정하는 역할)

3. Repository - (Annotation)

  1. [설명]
    1. Entity에 의해 생성된 DB에 접근하는 메서드들을 사용하기 위한 인터페이스를 말합니다
    2. 받은 정보를 DB에 저장하고 조회하는 기능을 수행합니다

4. Mapper - (Annotation)

  1. [설명]
    1. 일일이 DAO를 만들지 않고 Interface만을 이용해 더 편하게 개발을 할 수 있습니다
    2. 자바코드와 SQL문**(*.xml 형식)**을 분리하여 편리하게 관리하도록 도와줍니다
    3. XML파일과 Mapper Interface의 패키지 위치와 파일명이 동일해야합니다 (Ex. id=”mapper interface method”)
    4. MyBatis에서 인식할 수 있도록 도와주는 역할을 합니다
  2. [기능]
    1. @Insert
      1. xml파일 id에게 insert명령문을 이용하겠다고 명시하는 것입니다
      2. xml file에서는 인터페이스에 설정한 insert method 이름을 지정해서 이용할 수 있게 합니다
    2. @Update
      1. xml파일 id에게 update명령문을 이용하겠다고 명시하는 것입니다
      2. xml file에서는 인터페이스에 설정한 update method 이름을 지정해서 이용할 수 있게 합니다
    3. @Select
    4. @Delete