저자: Deepak Vohra, 한동훈 역
원문: http://www.onjava.com/pub/a/onjava/2005/05/11/sqlexplorer.html
SQLExplorer는 이클립스에서 데이터베이스에 연결하기 위해 사용되는 데이터베이스 플러그인이다. SQLExplorer 플러그인는 SQL을 사용한 데이터베이스 액세스에 GUI 기능을 추가해준다. SQLExplorer를 사용하여 테이블, 테이블 구조, 테이블에 저장된 데이터를 화면에 보여주거나, 업데이트, 삭제하는 것이 가능하며, 테이블을 생성하고 질의하기 위한 SQL 스크립트를 생성하는 것도 가능하다. 때문에 명령줄 SQL 클라이언트를 사용하는 것보다 SQLExplorer를 사용하는 것이 더 나은 선택이다. 여기서는 이클립스 3.0에서 SQLExplorer 플러그인을 사용하여 오픈 소스 데이터베이스인 MySQL에 JDBC로 연결하는 법을 설명할 것이다.
이 자습서는 4개의 절로 구성되어 있다.
- 개요
- 필요항목 설치
- SQLExplorer 설정
- 데이터베이스 데이터 이용하기
개요
SQLExplorer 플러그인은 IDE에 SQLExplorer "perspective"를 추가해서 데이터베이스에 SQL 클라이언트 액세스가 가능하게 이클립스를 설정한다.
SQLExplorer 플러그인을 설명하기 위해 MySQL 데이터베이스에 예제 테이블을 만들고, 이클립스 IDE에서 JDBC 연결을 만들자. 그 다음에는 SQLExplorer GUI SQL 클라이언트에 예제 데이터를 가져와서 화면에 나타내보자. 또한 SQLExplorer 플러그인의 다양한 특징들을 설명하기 위해 예제 테이블 데이터를 업데이트 및 삭제도 해볼 것이다.
필요항목 설치- 이클립스 3.02를 다운로드하고 설치한다.
- SQLExplorer를 다운로드한다
- SQLExplorer.zip 파일을 /eclipse 디렉터리에 푼다.
는 이클립스가 설치된 디렉터리를 의미한다. 압축을 풀면 Eclipse의 features와 plugins 디렉터리에 SQLExplorer 플러그인의 features와 plugins 디렉터리를 추가해준다.
- 이클립스 IDE를 재시작한다.
- MySQL 데이터베이스를 설치한다.
- Connector/J를 다운로드한다. Connector/J는 .jar 파일에 포함된 JDBC 드라이버를 사용하여 MYSQL 데이터베이스에 연결하는데 사용된다.
- MySQL 데이터베이스에 root로 로그인한다.
>mysql -u root
root 계정에 대한 비밀번호는 없으며, 비밀번호를 이용해서 데이터베이스에 로그인하려면 다음 명령을 사용한다.
>mysql -u root -p
- 예제 데이터베이스인 test 데이터베이스에 연결한다.
>use test
- test 데이터베이스에 예제 테이블을 생선한다. 예제 테이블 이름은 OnJava 기사로 구성된 Catalog로 한다. 예제 테이블을 생성하기 위한 SQL 스크립트는 다음과 같다.
CREATE TABLE Catalog(CatalogId INTEGER, Journal VARCHAR(25),
Publisher Varchar(25),
Date VARCHAR(25), Title Varchar(45), Author Varchar(25));
INSERT INTO Catalog VALUES("1", "onjava",
"OReilly", "April 2005", "Five Favorite Features from 5.0",
"David Flanagan");
INSERT INTO Catalog VALUES("2", "onjava",
"OReilly", "Feb 2005", "Introducing JBoss Remoting",
"John Mazzitelli");
INSERT INTO Catalog VALUES("3", "onjava",
"OReilly", "March 2005", "Aspect-Oriented Annotations",
"Bill Burke");
SQLExplorer 설정하기
SQLExplorer 플러그인을 설치했으면 이클립스 3.01에서 SQLExplorer 플러그인을 설정해보자. 먼저, 이클립스에서 SQLExplorer perspective를 설정한다. 이클립스에서 "Open a perspective" 버튼을 클릭한다. 그림1은 이 버튼을 보여준다.
그림1. perspective 열기
그림2에서 처럼 목록에서 SQLExplorer 플러그인을 표시하기 위해 "Other…"을 선택한다.
그림2. 메뉴 항목에서 "Other…" perspective 선택하기
그림3과 같이 Select Perspective 창에서 SQLExplorer perspective를 선택한다. SQLExplorer perspective를 선택한 이후에 이클립스에서 SQLExplorer 플러그인의 기능을 사용할 수 있게 된다.
그림3. SQLExplorer perspective
SQLExplorer perspective를 선택하면 이클립스에서 SQLExplorer 플러그인의 기능들을 표시해준다. Drivers 탭은 다양한 데이터베이스에 연결하기 위해 사용될 수 있는 데이터베이스 드라이버를 표시해준다. 사용할 수 있는 데이터베이스로는 DB2, MySQL, Oracle, Sybase, HSQLDB, SQL Server, PostgreSQL이 있으며, 여기서는 MySQL 데이터베이스를 이용할 수 있도록 SQLExplorer를 설정할 것이다. MySQL 드라이버를 설정하기 위해 그림4처럼 MMMySQL 드라이버를 마우스 오른쪽 클릭하고 Change the selected Driver를 선택한다.
그림4. 드라이버 수정하기
Modify Driver 창에서 Extra Class Path 탭을 선택하고 Add 버튼을 클릭해서 MySQL 드라이버 파일(.jar)를 classpath에 추가한다. - 이 파일은 다운로드 받은 Connector/J에 있다. 그림5는 이클립스 classpath에 MySQL JDBC 드라이버를 추가하는 화면이다.
그림5. 드라이버 설정 화면
MySQL Connector/J 드라이버 파일 mysql-connector-java-3.0.17-ga-bin.jar를 classpath에 추가한다. Example URL 항목에는 데이터베이스를 연결하기 위해 사용할 연결 URL을 설정한다. JDBC 연결은 MySQL을 설치할 때 함께 설정된 test 데이터베이스로 설정될 것이다. test 데이터베이스를 위한 연결 URL은 jdbc:mysql://localhost/test다. Driver Class Name 항목에는 MySQL JDBC 드라이버 com.mysql.jdbc.Driver로 설정한다. MMMySQL 드라이버는 그림6의 환경과 같이 설정한다.
그림6. MySQL JDBC 설정하기
연결명(connection alias)는 MySQL 데이터베이스에 연결하고, 데이터베이스 테이블을 가져오기 위해 필요하다. 연결명은 JDBC 드라이버, URL, 사용자이름, 비밀번호로 구성된 연결 설정을 의미한다. SQLExplorer perspective의 Aliases 탭을 선택한다. 그림7과 같이 새 명칭을 만들기 위해 "Create new Alias" 버튼을 클릭한다.
역주: connection alias는 연결별칭으로 옮길 수 있지만, 연결문자열에 대한 간단한 닉네임을 만드는 것이기에 간단히 "명" 또는 "명칭"으로만 옮겨둡니다.
그림7. 새 명칭 만들기
"Create new Alias" 창에서 사용할 명칭을 지정한다. MySQL 데이터베이스에 사용할 명칭을 만들기 위해 MMMySQL Driver를 선택한다. MySQL 데이터베이스 test에 사용할 연결 URL, jdbc:mysql://localhost/test를 URL 필드에 입력한다. 그림8은 MySQL 명칭 설정을 보여준다.
그림8. 새명칭 만들기
위 작업을 모두 끝내면 Aliases 탭에 새 명칭 MySQL이 추가된 것을 볼 수 있다. 명칭을 수정하려면 해당 명칭을 오른쪽 클릭한 후 "Change the selected Alias"를 선택하면 된다.
그림9. 추가된 MySQL 명칭
MySQL 연결명을 사용하여 MySQL 데이터베이스에 연결하고, 데이터베이스 데이터를 가져올 수 있다. 데이터베이스에 연결하기 위해 그림10처럼 MySQL 명칭을 오른쪽 클릭하고 Open을 선택한다.
그림10. 명칭을 이용해 연결하기
Connection 창에서 MySQL 데이터베이스에 로그인할 사용자이름과 비밀번호를 입력하고 OK 버튼을 클릭한다. 그림11은 로그인 설정을 보여준다. MySQL 기본 설정에서는 root 사용자의 비밀번호가 없다.
그림11. 연결하기
MySQL 데이터베이스와 JDBC 연결이 성공하면 이클립스는 그림12와 같이 MySQL 데이터베이스의 데이터베이스 스키마를 보여준다.
그림12. 연결 성공시 보여주는 데이터베이스 목록
다른 데이터베이스를 이용하기
예제의 JDBC 연결은 MySQL 데이터베이스에 대해 설정한 것이다. JDBC 연결은 Drivers 탭에서 데이터베이스에 대한 드라이버를 선택하는 것으로 다른 데이터베이스를 사용하게 설정할 수 있다. 선택한 데이터베이스에 대한 driver class와 연결 URL을 지정해서 해당 데이터베이스에 대한 JDBC 연결을 사용할 수 있다. 다른 데이터베이스에서 사용할 수 있는 driver class, 연결 URL, driver 파일(.jar) 목록은 다음과 같다.
- DB2
o Driver Class: COM.ibm.db2.jdbc.app.DB2Driver
o Connection URL: jdbc:db2:
o Driver .jar/.zip: db2java.zip
- Sybase
o Driver Class: com.sybase.jdbc2.jdbc.SybDriver
o Connection URL: jdbc:sybase:Tds::/
o Driver .jar/.zip: jconn2.jar
- Oracle
o Driver Class: oracle.jdbc.driver.OracleDriver
o Connection URL: jdbc:oracle:thin:@ ::
o Driver .jar/.zip: classes12.zip
- SQLServer
o Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
o Connection URL: jdbc:microsoft:sqlserver://localhost:1433
o Driver .jar/.zip: mssqlserver.jar, msbase.jar, msutil.jar
- PostgreSQL
o Driver Class: org.postgresql.Driver
o Connection URL: jdbc:postgresql://:/
o Driver .jar/.zip: postgresql.jar
위 목록에서
는 데이터베이스의 기본 인스턴스를 의미하고, 는 데이터베이스 포트, 는 데이터베이스 SID, 는 데이터베이스 서버를 의미한다.
데이터베이스 데이터 이용하기
앞 절에서는 이클립스에서 SQLExplorer 플러그인을 사용하기 위한 설정을 다루었었다. 이번에는 예제 테이블 Catalog에서 데이터를 가져오고 수정하는 것이 대해 살펴볼 것이다. 명령줄 SQL 클라이언트에서 데이터베이스에 액세스할 수 있으면, 다음 쿼리를 사용해서 테이블 데이터를 가져올 수 있다.(모두 한 줄에 작성된 것이다)
SQL>SELECT catalogId, journal, publisher, date,
title, author from Catalog;
위 쿼리를 실행하면 텍스트 테이블 형태로 데이터를 보여주지만, SQLExplorer를 사용하면 잘 짜여진 테이블로 데이터를 보여준다.
SQLExplorer는 테이블을 생성하거나 테이블에서 데이터를 가져오기 위한 SQL 스크립트를 생성할 수도 있다. 명령줄 클라이언트에서 DESC 명령어를 사용해서 테이블 구조를 보여준다면 컬럼명, 컬럼 종류, 컬럼 크기, "not null" 여부만 표시되지만 SQLExplorer를 사용하면 인덱스, 기본키, 외래키 값들도 표시된다.
SQLExplorer perspective에서 Database Structure View 탭을 선택한다. Catalog 테이블의 구조를 보기 위해 Database Structure View에서 Database>test>TABLE>Catalog를 선택한다. 그림13은 Catalog 테이블 구조를 보여주는 화면이다.
그림13. 데이터베이스 구조를 보여주는 화면
Columns 탭은 테이블의 컬럼 목록을 보여준다.
TABLE 항목에서 선택된 테이블의 데이터를 조회하기 위해 Preview 탭을 선택한다. 그림14는 Catalog 테이블의 데이터를 보여준다. 테이블에 대한 부가 정보는 Indexes, Primary Key, Foreign Key, Row Count 탭에서 찾아볼 수 있다.
그림14. 테이블 데이터 조회화면
테이블 생성 SQL 스크립트를 만들려면 그림15와 같이 해당 테이블을 오른쪽 클릭하고 Create Table Script를 선택한다.
그림15. 테이블 스크립트 만들기
위와 같이 하면 선택한 테이블을 생성할 수 있는 SQL 스크립트를 생성하고, 그림16과 같이 SQLExplorer perspective의 SQL Editor에 생성된 스크립트를 보여준다.
그림16. 테이블 스크립트
Database Structure View의 Preview 탭에 표시된 데이터는 테이블의 모든 컬럼을 가져오는 SELECT 질의를 사용한 것과 같다. 기본 SELECT 쿼리를 보려면 그림17과 같이 해당 테이블을 오른쪽 클릭하고 Generate Select in Sql Editor를 클릭한다.
그림17. 기본 Select 쿼리 작성하기
그림18과 같이 Catalog 테이블에서 데이터를 가져오는 기본 쿼리가 SQL Editor에 표시된다. SQL Editor에 표시된 SELECT 쿼리 문장의 끝에 세미콜론(;)이 없다는 것에 주의한다.
그림18. SELECT 쿼리
SELECT 쿼리는 테이블에서 필요한 컬럼만 표시하도록 변경할 수 있다. 예를 들어, CatalogId 컬럼을 제외하고 표시하도록 SELECT 쿼리를 수정할 수 있다. SQL 스크립트를 실행하기 위해 Execute SQL 버튼을 클릭한다. 수정된 SELECT 쿼리가 가져온 데이터는 그림19와 같이 SQL Results 창에 표시된다.
그림19. 수정된 SELECT 쿼리 실행 결과
다음은 SQL Editor에서 SQL 스크립트를 사용해서 Catalog 테이블을 업데이트하는 것이다. 예를 들어, "Five Favorite Features from 5.0"을 "New Features in JDK 5.0"으로 제목을 변경한다고 하자. Catalog 테이블을 업데이트하는 SQL 스크립트를 그림20과 같이 SQL Editor에서 실행할 수 있다.
그림20. UPDATE SQL 스크립트
테이블 데이터가 업데이트되고, 수정된 테이블에 기본 SELECT 쿼리를 실행해서 내용이 변경되었는지 확인해보자. 그림21은 Catalog 테이블의 데이터가 수정된 것을 보여준다.
그림21. 수정된 테이블 데이터
이번에는 그림22와 같이 SQL Editor에서 DELETE SQL 문을 사용하여 테이블에서 한 행을 지워보자. 여기서는 CatalogId="3"인 행을 삭제한다.
그림22. DELETE SQL 스크립트
테이블 데이터가 수정된 것을 확인하기 위해 기본 SELECT 쿼리를 수행한다. 그림23을 보면 SQL Results 창에 삭제된 행이 표시되지 않는 것을 볼 수 있다.
그림23. 행을 삭제한 테이블
이클립스에서 SQLExplorer 플러그인을 설정하는 것으로 개발환경은 명령줄 클라이언트보다 뛰어난 GUI SQL 클라이언트를 이용할 수 있게 되었다.
결론
예제 데이터베이스 테이블은 JDBC 연결을 사용하여 MySQL 데이터베이스에 연결하였다. SQL Explorer는 DB2, Sybase, Oracle, HSQLDB, SQL Server, PostgreSQL과 같은 다른 데이터베이스에 연결하도록 설정할 수 있다.
참고자료