ki-sd 님의 블로그
[2026-04-30] JTable 동적 렌더링과 콤보박스 기반 조건부 검색 연동 본문
자바 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 연동 로직을 완성했다.
'OracleStudy' 카테고리의 다른 글
| [2026-04-29] 시스템 관리자(Admin) 백오피스 구축과 RBAC 권한 제어 시스템 (0) | 2026.05.06 |
|---|---|
| [2026-04-28] Java JDBC 실전 2: 회원가입, 로그인 및 동적 권한 제어 시스템 구축 (0) | 2026.04.28 |
| [2026-04-27] 웹 아키텍처 총정리와 데이터베이스 ER 모델링 설계 로직 (0) | 2026.04.27 |
| [2026-04-24] Java JDBC 연동 실전: 음악 목록/검색/상세보기 시스템 구현 (1) | 2026.04.24 |
| [2026-04-23] PL/SQL 심화: 함수, 프로시저, 트리거의 완벽한 분리와 SQL 실전 총정리 (0) | 2026.04.23 |
