배움장 - 0tak
2022년 12월 28일의 배움
2022-12-28- 오늘은 JavaFX 프로그램에서 JDBC를 이용해 DBMS에 접근하는 방법에 대해 배웠다.
- 현재 코드를 보면 start() 메서드에서 주요 UI 컴포넌트에 대한 이벤트 리스너를 람다로 지정하면서, 그 안에 JDBC 관련 주요 로직을 위치시키고 있다.
- 메인 클래스의 생성자, 혹은 오버라이드된 init() 메서드에서 커넥션을 준비하고 클래스의 필드에 할당한다.
- 검색할 키워드를 입력하는 텍스트필드의 이벤트 리스너에서는 할당된 커넥션으로부터 PreparedStatement를 얻어 SQL문을 실행
- 그 결과를 반복문을 통해 VO에 할당하고,
- VO를 ObservableList 객체에 담아 TableView 객체에 맵핑하였다.
- 이러한 구성에는 뷰 렌더링과 데이터 조작과 관련된 로직이 한 데 섞여 있어 코드의 가독성을 떨어뜨리고 확장성이나 재사용성을 망칠 것임이 분명하다.
- 또한 DB 커넥션을 프로그램이 시작될 때 생성하여 종료시까지 유지시키거나, 매 요청마다 새로운 커넥션을 만드는 방식을 생각해볼 수 있는데, 동시접속 상황이 되면 두 방식에 모두 한계점이 있음을 논의하였다.
- 전자의 경우 DBMS에는 최대 커넥션 수가 정해져 있어서 커넥션을 사용하지 않는데도 계속 들고 있는 것은 비효율적이다. 클라이언트가 당장 커넥션을 사용하지 않는데도 최대 커넥션 수를 넘겨, 다른 클라이언트가 접속하지 못하는 경우가 발생한다는 것이다.
- 후자의 경우 커넥션 생성 자체가 DBMS에 부하가 되므로, 매 작업마다 새로운 커넥션을 만들면 부하가 가중되어 전체적인 성능에 악영향을 주게 된다.