WAS와 데이터베이스 사이의 연결에는 많은 비용이 듭니다.
MySQL 8.0을 기준으로 INSERT 문 수행시 필요한 비용의 비율은 이러하다고 합니다. (괄호 안의 숫자는 비율을 의미합니다.)
즉, 서버가 DB에 연결하기 위한 Connecting 비용이 가장 큰 비율을 차지합니다.
그렇다면 커넥션 비용을 줄이는 방법이 있다면, DB작업 성능 개선에 있어서 중요한 방법일 것 입니다.
A. Connection은 네트워크상의 연결 자체를 의미하고, Connection pool은 커넥션 객체들을 관리하는 공간을 의미합니다.
A. API문서 내용을 요약하자면, "데이터소스란 물리적인 데이터와의 Connection을 위한 Factory이며, DriverManager의 대안이고 DataSource Interface를 구현하는 객체는 JNDI라는 기술을 통해서 등록된다." 라고 합니다.
A. JDBC는 데이터베이스를 조작하는 표준 SQL 인터페이스 API입니다. (즉, 데이터베이스 커넥션 인터페이스)
A. 커넥션 풀 + DB 개념입니다.
A. Java 프로그래밍 언어를 사용하여 작성된 어플리케이션에 이름 지정 및 디렉토리 기능을 제공하는 API(Application Programming Interface)입니다.
A. DB설정 정보를 파악하기 쉽습니다.(소스 레벨이 아닌 WAS단에 설정정보를 분리했기 때문) 그리고 DB 커넥션풀을 효율적으로 사용할 수 있습니다.(DB Pool은 비용이 비싼 자원입니다. 어플리케이션 마다 DB Pool이 각각 생성된다면 비용이 너무 많이 듭니다. 이를 WAS단에서 DB Pool을 하나로 관리하는 방법이 JNDI입니다. = 공유객체)
즉, JNDI는 운영, 관리, 최적화 문제에 대한 다양한 이점이 있기 때문에 사용합니다.
JNDI를 알기 위해서는 DB용어에 관한 내용들을 알고 있어야 왜 JNDI 개념이 중요한지 알 수 있었습니다. 주의할 점은 DBCP방식이 JNDI방식보다 무조건 좋지 않다 그것은 아닙니다. 컨테이너에 하나의 어플리케이션만 올라간다면 서버설정을 건드릴 필요 없이 소스단에서 DB pool을 만들면 관리가 쉬워질 수 있습니다. 따라서 상황에 맞는 선택이 중요한 것 같습니다. 마지막으로 JNDI객체란 공유객체느낌으로 WAS에 DB pool을 하나로 관리해서 DB 커넥션 비용을 절감할 수 있는 장점과 DB설정 정보를 파악하기 쉽다는 크게 2가지의 장점이 있습니다.