DB Connection

DBCP pool

ho-bolt 2021. 9. 25. 01:57

DB에 연결하기 위해서는 매번 커넥션(Connection)객체가 요구된다. 

따라서 필요할 때마다 객체를 생성하는 데 이때마다 많은 시스템 자원이 요구된다.

 

이렇게 db에 접근하기 위해서는 매번 만들어 놓은 connection 객체를 생성하여 접근하는 것이다. 

이용자가 많이 않으면 문제가 없지만 이용자가 많아진다면 이것은 많은 시스템자원을 사용하여 속도가 느려진다. 

 

따라서 커넥션 풀이 중요하다! 

pool

그림처럼 커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 POOL에 저장해두고 있다고 필요할 때 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 것이다. 

풀 속에 미리 커넥션이 생성되어 있어 커넥션을 생성하느라 시간을 소비하지 않아 빠르다. 

그리고 재사용을 하기 때문에 생성되는 커넥션 수도 많지 않다. 

 

이에 따라 Application의 실행 속도가 빨라지고 한 번에 생성될 수 있는 커넥션 수를 제어해 동시 접속자 수가 많아져도 web application이 쉽게 다운되는 것을 막을 수 있다. 

 

이를 사용하기 위해서는 몇가지 설정을 해주어야 한다. 

 

🎈 META-INF >context.xml 

maxActive는 pool안에 최대 10개를 만들 수 있고 maxIdle는 평상시 10개를 유지한다라고 할 수 있다. 

오타가 없는 것이 중요하다.

 

 

 

그 다음 커넥션 풀에서 커넥션 객체를 가져와야 하는 데 아래가 그 코드다. 

첫 번째로 초기화를 해주고 

"java:comp/env"가 환경변수인데 그 위치를 가지고 온다

그 중에서 이름이 jdbc.UserChat인 녀석을 가지고 온다. 

그리고 그 이름을 가진 애를 가지고 와서 커넥션을 가지고 온다고 해석할 수 있다. 

 

=> 이것이 JNDI라는 JAVA naming Directary interface라는 서비스이다. 

 

728x90