Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-30] JTable 동적 렌더링과 콤보박스 기반 조건부 검색 연동 본문

OracleStudy

[2026-04-30] JTable 동적 렌더링과 콤보박스 기반 조건부 검색 연동

ki-sd 2026. 5. 6. 20:10

자바 UI 컴포넌트와 오라클 데이터베이스를 유기적으로 연결하여, 사용자의 입력(Event)에 따라 화면이 실시간으로 갱신되는 실무적인 동적 검색 로직을 완성했다.

 

1. JTable을 이용한 데이터 그리드 렌더링 기초

  • 오라클의 대표적인 샘플 테이블인 사원(EMP) 테이블을 활용해 데이터 목록을 화면에 출력했다.
  • DAO에서 SELECT * FROM emp를 통해 가져온 List<EmpVO> 데이터를 자바 Swing의 DefaultTableModel에 2차원 배열 형태로 행(addRow) 단위로 밀어 넣어 깔끔한 그리드(표) 형태의 UI를 렌더링하는 과정을 마스터했다.

2. 콤보박스(ComboBox)를 활용한 부서 검색 UI 연동

  • 사용자가 직접 검색어를 타이핑하는 텍스트 필드 방식은 오타가 발생할 수 있다. 이를 방지하기 위해 데이터베이스의 DEPT 테이블에서 부서명(dname) 목록을 SELECT로 긁어와 JComboBox의 아이템으로 동적 할당했다.
  • 화면이 로드될 때 하드코딩된 문자열이 아닌, 실제 DB에 존재하는 부서 목록만이 콤보박스에 드롭다운으로 나타나도록 하여 데이터의 무결성을 프론트엔드 UI 레벨에서도 지켜내는 방법을 배웠다.

3. 이벤트 리스너와 동적 SQL WHERE 절 매핑

  • 사용자가 콤보박스에서 특정 부서명(예: 'SALES')을 클릭(선택)하는 순간 발생하는 이벤트를 캐치하기 위해 ItemListener (또는 ActionListener)를 부착했다.
  • 이벤트가 발생하면 선택된 부서명을 추출하여 DAO의 검색 메서드로 넘긴다. DAO는 이 값을 받아 SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE dname = ?) 형태의 조인(JOIN) 또는 서브쿼리를 실행하여 결과 세트(ResultSet)를 다시 가져온다.
  • 화면 갱신(Repaint) 로직: 새로운 검색 결과를 화면에 뿌리기 전에 기존 JTable의 데이터를 model.setRowCount(0) 등의 방법으로 깨끗하게 지우고 새로 받아온 데이터를 다시 채워 넣음으로써, 사용자의 조작에 즉각적으로 반응하는 부드러운 UI/DB 연동 로직을 완성했다.