이제 db부분을 만들어봅시다.
Source Packages에서 New -> Java Packages해서 com.phpschool.guestbook.db를 추가합시다.
New -> Other해서 Java -> Java Interface를 선택하고 GuestbookDao라는 Interface를 추가합시다.
GuestbookDao.java
[code]package com.phpschool.guestbook.db;
import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;
public interface GuestbookDao {
public List<GuestbookVo> getContents();
}[/code]
이 인터페이스를 구현해봅시다.
db Package에 New -> Java Class를 선택하고 GuestbookDaoImpl 클래스를 추가합시다.
GuestbookDaoImpl.java
[code]package com.phpschool.guestbook.db;
import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
public class GuestbookDaoImpl extends SqlMapClientDaoSupport
implements GuestbookDao {
@SuppressWarnings("unchecked")
@Override
public List<GuestbookVo> getContents() {
return (List<GuestbookVo>)
getSqlMapClientTemplate().queryForList("getContents");
}
}[/code]
우선 SqlMapClientDaoSupport클래스를 상속받습니다. 이게 sqlMapClient를 가져오게 하는 것 같습니다. getSqlMapClientTemplate()라는 메소드로 sqlMapClient를 가져오는군요. 이걸로 이제 queryForList메소드를 호출해서 getContents라는 sql을 실행합니다.
그럼 SQL작성을 하는 MYSQLGuestbook.xml파일을 생성해봅시다.
db Package에 new -> xml Document를 선택하고, MYSQLGuestbook.xml을 생성합시다.
MySQLGuestbook.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Guestbook">
<resultMap id="resultGuestbook" class="GuestbookVO">
<result property="no" column="no" />
<result property="name" column="name" />
<result property="subject" column="subject" />
<result property="content" column="content" />
<result property="ip" column="ip" />
<result property="datetime" column="datetime" />
</resultMap>
<select id="getContents" resultMap="resultGuestbook">
SELECT no, name, subject, content, ip, datetime
FROM guestbook ORDER BY no DESC
</select>
</sqlMap>[/code]
iBATIS에서 사용하는 방식입니다. 우선 resultMap을 만드는데 db에 있는 column을 java에 있는 bean에 매핑하기 위해서 만듭니다. 아래는 getContents는 Dao에서 호출하는 이름과 같아야 합니다.
Dao를 만들었으니 Manager클래스를 만들어봅시다.
com.phpschool.guestbook.service 패키지를 만듭시다.
New -> Java Interface를 선택 후 GuestbookManager라는 interface를 만듭시다.
GuestbookManager.java
[code]package com.phpschool.guestbook.service;
import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;
public interface GuestbookManager {
public List<GuestbookVo> getContents();
}
[/code]
getContents부분을 구현해봅시다.
New -> Java Class를 선택 후 GuestbookManagerImpl라는 class를 만듭시다.
GuestbookManagerImpl.java
[code]package com.phpschool.guestbook.service;
import com.phpschool.guestbook.db.GuestbookDao;
import com.phpschool.guestbook.vo.GuestbookVo;
import java.util.List;
public class GuestbookManagerImpl implements GuestbookManager{
GuestbookDao guestbookDao;
public void setGuestbookDao(GuestbookDao guestbookDao) {
this.guestbookDao = guestbookDao;
}
public List<GuestbookVo> getContents() {
return guestbookDao.getContents();
}
}[/code]
Dao인터페이스를 하나 선언해주고 setter를 만들어줍니다. 이게 스프링에서 말하는 DI입니다. 저기에 값을 셋팅하는 건 applicationContext.xml이 해줍니다.
그리고 getContents메소드는 특별한 로직이 없어서 그냥 Contents만 리턴합니다.
Controller는 다음시간에-_-;
'넷빈즈'에 해당되는 글 23건
- 2008.01.07 [Spring] Spring + iBATIS 간단한 예제(NetBeans6.0이용) 2
- 2008.01.07 [Spring] Spring + iBATIS 간단한 예제(NetBeans6.0이용) 1
- 2007.12.10 [유틸리티] 넷빈즈(NetBeans) IDE 6.0 설치후기!
간단하게 DB에 있는 방명록 정보를 가져오는 정도를 해보겠습니다.
개발환경 : NetBeans6.0 + JDK6u3 + NetBeans내장Tomcat6.0 + iBATIS 2.3.0.677 + MySQL(버전모름-_-) + Spring Framework 2.5
우선 NetBeans6.0이 있어야겠고, Plugin으로 SpringFramework Support를 설치해야합니다.
메뉴에서 Tools -> Plugins클릭하면 Available Plugins를 선택하면 Spring Framework Support가 있는데 체크해서 설치를 하도록 합시다.
그런다음 프로젝트를 생성해봅시다.
File -> New Project선택 후 Web -> Web Application을 선택하고 Server는 Tomcat밖에 사용할 줄 모르니 Tomcat을 선택합니다(GlassFish사용할 줄 아는사람은 고거 선택하고^^)Next를 클릭하고
Project Name은 SpringIbatisExample 이라고 해봅시다. Next를 하면
Framework를 선택하라고 나옵니다. Spring Framework 2.5를 선택하고 Finish를 클릭합시다.
lib를 추가해야합니다. 따로 사용할 것은 iBATIS와 MySQL Connector입니다.
iBATIS는 www.ibatis.com 에서 받으면 되구요. MySQL Connector는 NetBeans에 내장되어있습니다.
프로젝트이름에 대고 오른쪽버튼 클릭 -> Properties -> Libraries -> Add Library 선택 후
MySQL JDBC Driver를 선택해서 추가합니다.
iBATIS는 아무 폴더에 설치 후에 Add JAR로 추가합시다.
넷빈즈에 Manage Libraries에 추가해서 사용하고 싶을 때 추가하게 할 수도 있습니다.
DB URL과 ID, PW를 설정해봅시다.
WEB-INF폴더 아래 jdbc.properties파일이 있는데 보면 어떤걸 설정해야할지 알껍니다.
driverClassName에는 com.mysql.jdbc.Driver를 넣고, url, id, pw를 넣으면 됩니다.
※DB구조입니다.
[code]CREATE TABLE `guestbook` (
`no` int(11) NOT NULL auto_increment,
`password` varchar(20) default NULL,
`name` varchar(250) default NULL,
`subject` varchar(2000) default NULL,
`content` text,
`ip` varchar(15) default NULL,
`datetime` datetime default NULL,
PRIMARY KEY (`no`)
)[/code]
간단하게 F6을 눌러서 실행되는지 확인해봅시다.
this is the /WEB-INF/jsp/index.jsp 라고 뜨면 된 것입니다.
이제 설정을 해봅시다.
Configuration Files 밑에 applicationContext.xml파일을 열어봅시다.
applicationContext.xml
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 요고 밑에다가 작성해봅시다.
[code]<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="/WEB-INF/SqlMapConfig.xml"/>
</bean>
<bean id="guestbookDao" class="com.phpschool.guestbook.db.GuestbookDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<bean name="guestbookManager"
class="com.phpschool.guestbook.service.GuestbookManagerImpl">
<property name="guestbookDao" ref="guestbookDao" />
</bean>[/code]
iBATIS에서 sqlMap을 생성하는 부분입니다. 오...3줄이면 끝나는군요.
아래는 Dao를 하나 선언해줍니다. 이 Dao는 sqlMapClient를 받습니다. 그래서 이 sqlMapClient를 통해
sql문에 접근할 수 있습니다. 그리고 그 아래에 있는 bean은 Manager입니다. Dao를 이용해서 service로직을 구현하는 부분입니다.
그러면 저기 sqlMapClient property에 있는 configLocation에 SqlMapConfig.xml파일을 만들어봅시다.
Web Pages -> WEB-INF에 대고 New -> Other하고 XML Document를 선택하고 SqlMapConfig.xml파일을 생성한 뒤 다음과 같이 씁시다.
SqlMapConfig.xml
[code]<?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>
<typeAlias alias="GuestbookVO" type="com.phpschool.guestbook.vo.GuestbookVO"/>
<sqlMap resource="com/phpschool/guestbook/db/MySQLGuestbook.xml" />
</sqlMapConfig>
[/code]
다음과 같이 sqlMapConfig를 생성합니다. alias는 아래 resource에서 사용할 클래스 이름의 별명을 사용하게 하는 것입니다. 예를 들어 ResultClass 등에서 패키지명까지 다 입력해주어야하는데 alias를 지정해주면 클래스명만 써도 됩니다.
그리고 아래는 resource, 즉 sql들을 모아둔 xml파일입니다.
우선 제끼고 ValueObject를 만들어봅시다.
Source Packages에 대고 New -> Java Package선택 후 Package Name을 com.phpschool.guestbook.vo 라고 줘서 vo라는 패키지를 만듭시다.
그리고 New -> Java Class선택 후 Class Name을 GuestbookVo라고 합시다.
GuestbookVo.java
[code]private int no;
private String password;
private String name;
private String subject;
private String content;
private String ip;
private Timestamp datetime;[/code]
위 까지만 타이핑하고, Alt + Ins 하면 Getter And Setter가 나오는데 선택하고 전체를 다 선택하면 자동으로 setter와 getter가 만들어집니다.
아 힘들어-_-; 다음 이시간에-_-;
정식판으로 릴리즈 했군요. 기회가 되면 써보려고 했는데 ^^
워낙 새로운 것을 좋아해서 이것저것 다 써보고 싶어요 ^^(기능을 다 쓰지는 못하지만 ㅠㅠ)
넷빈즈가 왠지 SUN에서 지원을 하는거라 자바에 더욱 강할 것 같은 느낌에-_-;
오....로고가 멋있네요-_-;
한번 튜토리얼을 따라해봅시다. 어떤 것이 있는지 살펴보다가 보니까 프레임워크도 지원하더군요.
요즘 대세인 스프링프레임워크가 있습니다-_-; 한번 해봐야겠습니다.
튜토리얼을 보니까 The Spring NetBeans Module 라는 것을 받아야 한다는군요. 요 아래주소에 있군요.
http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=808
받아서 설치하는 법도 있구요. 가능한 업데이트에서 찾을 수도 있네요.
Tools -> Plugins 클릭하시면 Available Plugins에 Spring Framework Support 라는게 있네요.
체크하고 인스톨을 한번 해봅시다. 이거 업데이트가 굉장히 쉽게 되어있네요 ^^
설치를 했으면 프로젝트를 만들어봅시다.
File -> New Project 해서 Categories에 Web선택 후 Web Application을 선택해봅시다. Next하면,
Project Name을 HelloSpring으로 적어넣고 서버는 기본이 글래스피쉬 V2로군요. 안써봤는데 어쨌든 해봅시다-_-;
(항상 톰캣만 쓰다가 ^^ 고양이는 생선을 좋아하는데-_-;)
또 Next하면 Frameworks를 선택할 수 있습니다. Spring Framework 2.5를 선택합시다.
Finish를 누르니 뭔가가 만들어졌습니다.
오....멋집니다. 예전에 스프링으로 방명록을 만들 때 삽질했던 xml이 지들 스스로 들어가있어요-_-;
자 이제 Hello World를 찍어봅시다 ㅠㅠ
web.xml을 열어보고 놀랬습니다. 멋지군요-_-; 설정하기 쉽게 만들어놨네요 ^^
*.htm요청으로 들어오는 놈들은 DispatcherServlet으로 처리를 하는군요.
어쨌든 dispatcher-servlet.xml을 보면 urlMapping에 index.htm요청이 들어오면 indexController에게 넘기는군요.
indexCotroller는 org.springframework.web.servlet.mvc.ParameterizableViewController 요 컨트롤러고, viewName이 index인데 아마 viewResolver에 의해서 index.jsp를 실행하는 거같습니다.
잘모르겠네요-_-; 어쨌든 Hello World를 찍어봅시다-_-;
WEB-INF/jsp/index.jsp 를 수정해봅시다.
아래에 그냥 Hello World를 추가해봅시다-_-;
그리고 f6을 눌러봅시다.
아....되는구나-_-;
JAVADB도 만져보니까 되네요. 가상DB같은데 뭔가 테스트할 때 편한 것 같습니다.
그리고, AWT나 SWING을 드래그앤드랍으로 만들 수 있는 것 같습니다.
(예전에 EditPlus밖에 몰랐을 때 SWING할 때 원하는 위치에 맞추려고 얼마나 고생을 했는지 ㅠㅠ)