Chapter 12


@SuppressWarnings

코드 컴파일시 컴파일 경고를 하지 않도록 하는 어노테이션 설정

예제코드

@SuppressWarnings("unchecked")
public void TestClass {
  //...
}

속성

속성설명
all모든 경고를 무시
boxingboxing/unboxing 오퍼레이션과 관련된 경고를 무시
dep-ann권장하지 않는 어노테이션과 관련된 경고 무시
deprecation권장되지 않는 기능과 관련된 경고 무시
fallthroughswitch문에서 누락된 break문과 관련된 경고 무시
finally리턴되지 않는 마지막 블록과 관련된 경고 무시
hiding변수를 숨기는 로컬과 관련된 경고 무시
incomplete-switchswitch문에서 누락된 항목과 관련된 경고 무시
javadocjavadoc 경고와 관련된 경고 무시
nls비nls 문자열 리터럴과 관련된 경고 무시
nullnull분석과 관련된 경고 무시
rawtypes원시 유형 사용법과 관련된 경고 무시
resourceclosable 유형의 자원 사용에 관련된 경고 무시
restriction올바르지 않거나 금지된 참조 사용법과 관련된 경고 무시
serial직렬화 가능 클래스에 대한 누락된 serialVersionUID필드와 관련된 경고 무시
static-access잘못된 정적 액세스와 관련된 경고 무시
static-methodstatic으로 선언될 수 있는 메소드와 관련된 경고 무시
super부모 클래스 호출을 사용하지 않는 메소드 오버라이딩과 관련된 경고 무시
synthetic-access내부 클래스로부터의 최적화 되지 않는 액세스와 관련된 경고 무시
sync-override동기화된 메소드를 오버라이드하는 경우 누락된 동기화로 인한 경고 무시
unchecked미확인 오퍼레이션과 관련된 경고 무시
unqualified-field-access규정되지 않은 필드 액세스와 관련된 경고 무시
unused사용하지 않는 코드 및 불필요한 코드와 관련된 경고 무시
cast캐스트 오퍼레이션과 관련된 경고 무시

템플릿 메소드 패턴

상위 클래스에서 처리의 흐름을 제어하며, 하위 클래스의 처리 내용을 구체화한다.

여러 클래스의 공통적인 부분을 상위 추상 클래스에서 구현하고, 각각의 상세구분은 하위 클래스에서 구현한다.

코드의 중복을 줄일 수 있고, 상속을 통한 확장 개발 방법으로 전략 패턴(Strategy Pattern)과 함께 가장 많이 사용되는 패턴이다.

고려사항

  • 멤버 함수들의 접근 범위 지정을 명확히 해야한다.
  • 상위 추상 클래스에서 구현 할지, 하위 클래스에서 구현하게 할지를 결정해야 한다.
  • 추상 메서드(abstract method)의 수를 줄이는 것이 중요하다. (virtual table 확장에 따른 perfomance 문제 발생)

용어

  • 추상 메소드(Abstract Method)
    • 추상 메서드(abstract method)로 정의한 메소드
    • 상위 추상 클래스를 상속받은 하위 클래스들은 해당 메소드를 반드시 구현해야 한다.
    • 각 하위 클래스마다 다른 작업을 하게되는 부분
  • 훅 메소드 (Hook Method)
    • 상위 추상 클래스에 구현된 메소드
    • 해당 상위 추상 클래스를 상속받은 하위 클래스들에 공통적으로 적용되는 메소드이다.
    • 모든 하위 클래스가 같은 작업을 하게되는 부분

DBCP

DBCP(DataBase Connection Pool)

데이터베이스와 연결된 커넥션을 미리 만들어 놓고 풀(Pool) 속에 저장해 두고 있다가 필요할 때 커넥션을 풀에서 꺼내 쓰고 다시 풀에 반납하는 기법을 말한다. 웹 프로그램에서 데이터베이스의 환경설정과 연결 관리 등을 따로 속성파일로 관리를 하고 이렇게 설정된 정보를 이용하여 커넥션을 획득하는 방법이다.

설명

  • 웹 어플리케이션이 실행되면 미리 커넥션 객체를 생성하여 풀에 담아둔다.
  • DB와 연결된 커넥션을 미리 생성하여 풀 속에 저장해두고 있다가 필요할 때 가져다 쓴다.
  • 미리 생성해두었기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리할 수 있다.

종류

  • Commons DBCP
  • Tomcat-JDBC
  • BoneCP
  • HikaraCP

설정

DBCP 기준 옵션 설명

옵션설명예제
initialSize최초 설정되는 커넥션 수initialSize=5
maxActive동시에 사용할 수 있는 최대 커넥션 수maxActive=15
maxIdle커넥션 풀에 대기로 있을 수 있는 최대 커넥션 수maxIdle=10
minIdle커넥션 풀에 대기로 있을 수 있는 최소 커넥션 수minIdle=5
maxWait모든 커넥션이 사용 중인 경우 커넥션을 기다리는 시간maxWait=1000

[예제 설명]

위의 옵션대로 설정한 경우

  • initialSize : 최초 웹 어플리케이션을 실행 했을 때 커넥션 풀에 5개의 커넥션이 생성된다.
  • maxActive : 웹 어플리케이션 실행 중 동시에 최대로 사용할 수 있는 커넥션의 수
    • 최초에 5개의 커넥션이 생성되는데 부족한 경우 추가로 10개까지 더 생성할 수 있다.
  • maxIdle : 커넥션을 모두 사용한 후에 풀에 대기상태로 있을 수 있는 최대 커넥션 수
    • 15개를 사용하다가 5개는 반납하고 10개의 유휴 커넥션을 풀에 유지한다.
  • minIdle : 커넥션을 모두 사용한 후에 풀에 대기상태로 있을 수 있는 최소 커넥션 수
    • 5 ~ 10개의 커넥션을 풀에 유지할 수 있다.
  • maxWait : 커넥션이 모두 사용중인 경우 다음 커넥션을 사용할 수 있을 때까지 기다리는 시간
    • 최대 1초동안 기다리고 반납되지 않으면 time out이 발생
    • Millisecond 단위로 설정 (1000 = 1초)