2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.1 - 게시판도 HTML부터] 게시글 리스트
2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.2 - 게시판도 HTML부터] 글입력폼
2012/06/13 - [Lecture/Javascript-기초] - [본격 게시판짜기 Part1.3 - Dom 맛보기 ] 글입력폼 검사
2012/06/13 - [Lecture/Jsp] - [본격 게시판짜기 Part1.4 - HTML-> JSP] form 파라미터 받기
2012/06/26 - [Lecture/SQL / Oracle] - [본격 게시판짜기 Part1.5 JSP > Oracle] 게시판 DB 테이블 생성
2012/06/26 - [Lecture/Jsp] - [본격 게시판짜기 Part1.6 Oracle > JSP] Database 접속 및 Select
2012/07/05 - [Lecture/Jsp] - [본격 게시판짜기 Part1.7 JSP, SQLDeveloper] 게시글 입력 및 리스트조회기능
2012/07/08 - [Lecture/Jsp] - [본격 게시판짜기 Part1.8 JSP 게시글 조회] 게시글 조회기능 및 게시글 삭제
2012/07/10 - [Lecture/Jsp] - [본격 게시판짜기 Part2.1 Model2 MVC패턴] 뷰(View) 코드 분리
2012/07/10 - [Lecture/Jsp] - [본격 게시판짜기 Part2.2 Model2 MVC패턴] Entity Beans의 사용
2012/07/12 - [Lecture/Jsp] - [본격 게시판짜기 Part2.3 Model2 MVC패턴] Controller구성
2012/07/13 - [Lecture/Jsp] - [본격 게시판짜기 Part2.4 Model2 MVC패턴] Model 구성
안녕하세요 cocy입니다.
오늘은 저번시간에 구성한 Model을 i-batis를 사용하여 재구성 해 보도록 하겠습니다.
※ i-batis는 비영리 개발단체인 aphache에서 개발한 오픈소스 ORM(Object Relational Mapping) 프레임워크입니다.
현재 구글로 넘어가 my-batis라 불리고 있으며 포스팅시점에서는 i-batis를 사용합니다. 다른 ORM으로는 하이버네이트가 있음.
기존에 사용한 JDBC와 i-batis의 차이점을 비교하자면
기존의 JDBC에서는 실제로 사용되는 DB 드라이버 로드부터 커넥션 객체를 생성하고
실제 DB에 접근하여 해당 결과값을 받아오는데요,
현재 구현된 소스에서는 하나하나의 커넥션을 관리해주는 커넥션 풀을 사용하지않고,
모든 사용자에게 커넥션을 허용하였기때문에, 사용자가 몰릴경우 DB에 과도한 무리를 주어,
성능상의 문제를 야기할 수 있습니다.
i-batis는 이러한 커넥션 생성부터 관리까지의 일련의 db연결과정을 정형화시켜놓은 라이브러리입니다.
XML파일에 맵핑정보와 쿼리들을 기술하고,
데이터베이스의 테이블과 자바 객체를 맵핑하여,
코딩의 단순화와 jdbc를 사용할때 불편했던 작업들을 대신 수행해주므로써,
코드의 분량을 기존대비 60%정도 만으로도 프로그램의 작성이 가능해집니다.
그럼 i-batis의 사용을 위해 라이브러리를 추가해봅시다.
경로는 WebContent > WEB-INF > lib 폴더입니다.
추가가 끝나셨으면 이제 이 라이브러리들을 사용하기위해 패키지를 만듭시다.
접속정보를 설정할 파일들을 담을 패키지입니다.
new > package > com.board.db.sqlconfig
그리고 이곳에 CommonDao.java에 적었던 접속정보들을 적기위한 properties파일을 하나 만듭시다.
com.board.db.sqlconfig > new > file > SqlMapConfig.properties
내용은 다음과 같이 채워주세요 (※ properties파일의 주석은 #입니다.)
※ 주의!!! 이부분에서 에러가 많이 발생하는데요,
SqlMapConfig.properties파일에서 필요한 문자외의 공백이 들어가면 안됩니다.
#driver=oracle.jdbc.driver.OracleDriver # 기존의 오라클 드라이버입니다.
driver=core.log.jdbc.driver.OracleDriver # 로그를 찍기위해 사용하는 오라클 드라이버입니다.
url=jdbc:oracle:thin:@localhost:1521:XE # 데이터베이스에 접속 정보입니다.
username=board # 데이터베이스 계정명
password=board # 데이터베이스 암호
※ 그대로 복사해서 붙여넣으시는 분들은
아래의 주석과 공백을 제거한 구문을 넣어보시기 바랍니다.
url=jdbc:oracle:thin:@localhost:1521:XE
username=board
password=board
작업이 끝나셨으면 방금 작성된 파일을 읽어서 사용할 i-batis의 설정파일을 만듭니다.
com.board.db.sqlconfig > new > file > SqlMapConfig.xml
내용은 다음과 같습니다.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<
sqlMapConfig
>
<
properties
resource
=
"com/board/db/sqlconfig/SqlMapConfig.properties"
/>
<!-- 접속정보를 저장한 properties파일을 지정합니다. -->
<
settings
cacheModelsEnabled
=
"true"
enhancementEnabled
=
"true"
lazyLoadingEnabled
=
"true"
maxRequests
=
"20"
maxSessions
=
"10"
maxTransactions
=
"10"
useStatementNamespaces
=
"false"
/>
<
transactionManager
type
=
"JDBC"
>
<
dataSource
type
=
"DBCP"
>
<
property
name
=
"JDBC.Driver"
value
=
"${driver}"
/>
<
property
name
=
"JDBC.ConnectionURL"
value
=
"${url}"
/>
<
property
name
=
"JDBC.Username"
value
=
"${username}"
/>
<
property
name
=
"JDBC.Password"
value
=
"${password}"
/>
<
property
name
=
"Pool.MaximumActiveConnections"
value
=
"10"
/>
<
property
name
=
"Pool.MaximumIdleConnections"
value
=
"10"
/>
<
property
name
=
"Pool.MaximumWait"
value
=
"60000"
/>
<
property
name
=
"Pool.ValidationQuery"
value
=
"select 1 from dual"
/>
<
property
name
=
"Pool.LogAbandoned"
value
=
"false"
/>
<
property
name
=
"Pool.RemoveAbandoned"
value
=
"false"
/>
<
property
name
=
"Pool.RemoveAbandonedTimeout"
value
=
"60000"
/>
</
dataSource
>
</
transactionManager
>
<
sqlMap
resource
=
"com/board/db/sqlmaps/Board.xml"
/>
</
sqlMapConfig
>
소스를 간략히 설명하자면,
sqlMapConfig 태그로부터 시작해서
접속정보를 저장한 properties파일의 경로를 지정해주고,
db접속에 관련된 셋팅을 합니다.
그리고 불러온 접속정보를 매치해줍니다. 많이보던 표현식이 들어있네요.
각 속성에 관해서는 따로 설명 안드리겠습니다. ※ 검색해보세요!
눈여겨 보셔야 할 부분은
빨갛게 표시한 sqlMap resource 부분입니다.
바로 쿼리가 들어가게될 xml파일을 지정하는 부분인데요,
저런식으로 쿼리별 xml을 늘려서 추가하는 것이 가능합니다.
명시를 해줬으니 만들어줘야겠죠?
역시 패키지를 만들어 추가합니다.
com.board.db.sqlmaps > new > file > Board.xml
Board.xml파일에 들어갈 내용은 분량이 많은 관계로 다음 포스팅에서 다루도록 하겠습니다.
그럼 이제 지금까지 설정한 파일들을 Java에서 사용하기위해 IBatisDBConnector.java 라는 파일을 만들어 보겠습니다.
com.board.db.sqlconfig > new > file > IBatisDBConnector.java
내용은 다음과 같습니다.
package
com.board.db.sqlconfig;
import
java.io.Reader;
import
com.ibatis.common.resources.Resources;
import
com.ibatis.sqlmap.client.SqlMapClient;
import
com.ibatis.sqlmap.client.SqlMapClientBuilder;
public
final
class
IBatisDBConnector {
private
static
SqlMapClient mySQLMap;
static
{
try
{
// 접속설정파일로드
String resource =
"com/board/db/sqlconfig/SqlMapConfig.xml"
;
Reader reader = Resources.getResourceAsReader(resource);
mySQLMap = SqlMapClientBuilder.buildSqlMapClient(reader);
}
catch
(Exception e)
{
e.printStackTrace();
}
}
public
static
SqlMapClient getSqlMapInstance()
{
// 인스턴스 반환 메서드
return
mySQLMap;
}
}
'Lecture > Mybatis' 카테고리의 다른 글
[본격 게시판짜기 Part2.7 Model2 MVC패턴] i-batis의 queryForList를 활용한 Paging기능구현 (25) | 2012.07.21 |
---|---|
[본격 게시판짜기 Part2.6 Model2 MVC패턴] Model 구성2 - i-batis의 사용2 (79) | 2012.07.17 |