스트럿츠2 아이바티스 데이터베이스 연결 소스
안녕하세요.
고코더 입니다.
오늘은 ibatis를 이용해 오라클 데이터베이스를 연결하는 방법을 알아보겠습니다.
ibatis를 이용한 이유는 스트럿츠2에서 가장 많이 사용하는 프레임워크 입니다.
실무에서도 이 두 조합은 쉽게 볼 수 있습니다.
그래서 최대한 쉽게 ibatis를 스트럿츠2를 이용해 데이터베이스를 연결해서 select 쿼리를 날려보겠습니다.
학습전에 제가 남겨둔 이전 스트럿츠 강의를 보고 오시길 바랍니다. 해당 소스를 활용할 예정입니다.
그리고 오라클 데이터베이스도 설치하시면 좋을거 같습니다
->
Oracle - 오라클 오류 "ora-28000 the account is locked" / 계정이 잠겨 있습니다.
오라클 - scott 계정은 첫 로그인 후 비번을 바꿔야 합니다. / the password has expired
● 1. SqlMapConfig.xml 생성
src 폴더 아래 SqlMapConfig.xml 를 생성해주세요. 데이터베이스 연결을 위한 config 파일 입니다.
내용은 아래처럼 채워주세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="JDBC.Username" value="scott"/> <property name="JDBC.Password" value="tiger"/> </dataSource> </transactionManager> <sqlMap resource="map/db_test.xml" /> </sqlMapConfig> | cs |
● 2. SqlMapLocator.java 생성
util 패키지를 생성하여 SqlMapLocator.java 파일을 만듭니다. ibatis를 사용하기 위한 기본 파일입니다.
내용은 아래처럼 채웁니다.
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 | package util; import java.io.IOException; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class SqlMapLocator { public static SqlMapClient getMapper() { SqlMapClient sqlMapper; try { Reader reader = Resources.getResourceAsReader( "SqlMapConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e); } return sqlMapper; } } | cs |
해당 예제는 ibatis를 사용할때 거의 공통으로 쓰는 방식입니다. 우선 작성해보세요.
● 3. db_test.xml
이번엔 이전에 생성한 map 패키지 안에 db_test.xml을 만듭니다.
이 파일은 게시판을 만들때 사용하기 위해 test 라는 이름으로 만들었습니다.
해당 xml은 모든 쿼리를 작성하여 사용합니다.
내용은 아래처럼 채웁니다.
1 2 3 4 5 6 7 8 | <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap> <select id="conTest" resultClass="String"> select 'Database Connection Test' as conTest from DUAL </select> </sqlMap> | cs |
5번째 라인 : 해당 쿼리에 id를 지정합니다. 반환 클래스는 스트링 문자로 반환합니다.
6번째 라인 : select 문을 작성하였습니다. 오라클 기본 테이블을 이용하여 데이터베이스 연결 테스트 입니다.
● 4. TestDao.java 생성
이제는 쿼리를 끌어와 실행시킬 DAO(Data Access Object) 파일을 생성합니다. 이 파일은 DB를 사용해 데이터를 조화하거나 조작하는 기능을 전담하는 오브젝트입니다.
내용은 이렇게 작성합니다. 데이터 베이셔 연결을 위한 쿼리만 하나만 가져옵니다.
1 2 3 4 5 6 7 8 9 10 | package test; import java.sql.SQLException; import util.SqlMapLocator; public class TestDao { public String conTest() throws SQLException { //데이터베이스 연결 테스트 return (String)SqlMapLocator.getMapper().queryForObject("conTest"); } } | cs |
8번째 라인 : ibatis에 queryForObject 를 사용해 연결되어 있는 XML에 conTest 쿼리를 가져옵니다.
● 5. TestAction.java 수정
해당 Action 파일을 수정 합니다. 이전에 함께 따라 하신분은 코드를 추가하면 됩니다.
내용은 이렇게 기록 합니다. 기존 액션 클래스에 내용을 추가했습니다.
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 32 33 34 35 36 37 38 39 | package test; import java.sql.SQLException; import com.opensymphony.xwork2.ActionSupport; public class TestAction extends ActionSupport { String Title; String Content; public String getTitle() { return Title; } public void setTitle(String Title) { this.Title = Title; } public String getContent() { return Content; } public void setContent(String Content) { this.Content = Content; } public String getView() { //this.Title = "제목"; //this.Content = "내용"; return SUCCESS; } /*데이터베이스 연결 테스트를 위한*/ TestDao dao = new TestDao(); String ConYN; public String getConYN() { return ConYN; } public String conTest() throws SQLException { this.ConYN = dao.conTest(); return SUCCESS; } } | cs |
9번 라인 : 위에서 생성한 dao를 생성합니다.
15번 라인 : 위에서 작성한 conTest() 메소드를 가져옵니다.
● 6. struts2_test.xml 추가
이제는 URI에서 맵핑이 되도록 struts2_test.xml를 수정해보겠습니다.
아래에 내용을 추가합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="struts2_test" namespace="/test" extends="struts-default"> <action name="hello" class="hello.HelloAction"> <result name="success" >/WEB-INF/hello.jsp</result> </action> <action name="view" class="test.TestAction" method="getView"> <result name="success" >/WEB-INF/test/view.jsp</result> </action> <!-- 데이터 베이스 연결 테스트 --> <action name="conTest" class="test.TestAction" method="conTest"> <result name="success" >/WEB-INF/test/conTest.jsp</result> </action> </package> </struts> | cs |
● 7. WEB-INF/test/conTest.jsp 파일 생성
뷰를 작성하기 위해 test 폴더 아래 해당 파일을 생성합니다.
아래에 내용을 기입합니다.
1 2 3 4 5 6 7 8 9 10 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> 접속 : ${ConYN} </body> </html> | cs |
${ConYN}을 이용해 데이터베이스 액세스를 체크 합니다.
● 8. 결과 화면
마무리
최대한 쉽게 가르켜드리려고 합니다.!
'IT_Developers > struts2' 카테고리의 다른 글
Struct2 - Preparable 이란? 사용법 / 기본 예제 (0) | 2019.10.23 |
---|---|
Struts2 - 스트럿츠에서 session 사용하기 / getSession(); (0) | 2019.10.09 |
Struts2 - 스트럿츠에서 한글이 깨질때 4가지를 확인해보세요. (0) | 2019.10.09 |
Struts2 - struts.properties 란? / 파일 생성 / 옵션 설정 (0) | 2019.10.09 |
Struts2 - struts.xml 란? include, namespace 사용방법 (0) | 2019.10.04 |
댓글