자, 본격적으로 Hibernate 와 Spring 을 Mapping 시켜 봅시다.
선수작업!!!!!!!!!!!! ^-^
이 블로그를 먼저 보신분은 http://joke00.tistory.com/116 의 middlegen 을 이용하여 hibernate의 hbm.xml 을 만드시거나 손수 손으로 hbm.xml 을 작성하시고 보시길 바랍니다!! 꼬~~~~옥!!!!!!!
그러기 위해서 첫번째로 해야 할 사항. 일단 내가 써야할 프레임 워크의 라이브 러리를 집어 넣는 것이 첫번째 사항이라고 생각됩니다. (라이브 러리만 잘 맞춰 주어도 불필요한 에러는 안 볼 수 있죠~ -ㅅ-;;; 이번에 필요한것만 간단간단하게 넣어보자 하고 몇개 빼 먹었더니... 다양한 에러를 감상해 보았습니다.. ^^ 뭐, 에러를 보고 파악하는 것도 개발자의 중요한 사항이라고 생각되지만... 이제 삽질은 그만~ 야근 없는 세상에서 살기 위해서는 삽질은 그만 해야 하겠쬬?! ^^)
hibernate 의 라이브 러리는 이곳 에서 다운받으면 될 것같은데..... 사이트가 많이 바뀌어 다운 받는 곳을 모르겠숨다 ;;; ㄷㄷㄷㄷ;; 그럴수도 있죠.. 정작 급하게 되면 어떻게든 알아낼텐데.. 전 급하지가 않습니다 -_-;;;
그래서 여기에 필요한 라이브러리를 첨부하도록 할께요~ ^^
하이버네이트 라이브 러리 hibernate-distribution-3.3.2.GA-dist.zip 을 받아서 풀게도면 lib 폴더 안에 required 폴더가 있습니다. 여기에 속해있는 jar 파일 모두와, hibernate3.jar 를 lib 에 추가해 주면 됩니다.
또 한가지 라이브 러리! commons-lang.jar 또한 필요합니다! why? 앞에서 middlegen 으로 만든 Item.jar 파일의 toString() 메소드를 보면 ToStringBuilder 가 있는데 이 클래스를 commons-lang.jar 에서 찾게 됩니다 ^^. ToStringBuilder 에 대한 에러가 날 경우에는 commons-lang.jar 를 추가해 주면 말끔하게 없어진답니다! ^-^ 후훗-
slf4j-log4j12-1.5.10.jar 파일도 필요합니다 ^^
더, 자세한 내용은 http://antop.tistory.com/53 를 참조하시기 바랍니다 ^^
자, 이제 라이브 러리 셋팅이 끝났으니 본격적으로 개발을 해보도록 하겠습니다.
1. applicationContext.xml 파일 수정
* applicationContext.xml
* dataSource : 설정파일에서의 dataSource 를 참조
* mappingResources : 기존에 hibernate.cfg.xml 에서 설정하여 사용했던
<mapping resource="logic/Item.hbm.xml" /> 부분 입니다. hibernate 와 xml 을 mapping 해주던부분....
* hibernateProperties : hibernate 설정 하는 부분. dialect 에는 oracle 을 쓰기 때문에 Orcal10gDialect 를 써준것이고, 해당 db에 따라 설정 value 값이 틀려집니다. 맞게끔 써 주시면 된답니다~ ^^
hibernate.dialect : 사용하는 데이터베이스의 dialect
hibernate.show_sql : Hibernate 가 실행하는 sql 표시의 유무
그리고는 hibernate 를 쓸 Dao 의 bean 에 대해서 ref (참조할 bean 에 대한 이름을 명시해 주면 됩니다
2. Dao Implements 의 java 파일 코딩을 시작합니다.
* ItemDaoImpl.java
일단 알아보기 쉽게 기존 소스 코드를 모두 지우고 시작합시다~ ^^ 이제 JdbcDaoSupport 는 안쓸꺼니깐요! ^^
JdbcDaoSupport 상속받아 썻었던 부분을 hibernate 를 쓰기 위해서는 HibernateDaoSupport 를 상속받을 껍니다.
getHibernateTemplate() 메소드를 이용하여 HQL 쿼리를 날릴겁니다.
참고로 HQL 쿼리의 hbm.xml 에 정의한 name 값으로 properties 명을 작성 안하면 에러 뿜습니다~
이렇게 name 이 logic.Item 이었기 때문에 from 테이블명이 logic.Item 이렇게 쓴 것 이랍니다.
* HQL ?
O/R 맵핑 툴의 하나인 Hibernate 는 HQL 에 의한 질의를 합니다. HQL 이란 Hibernate Query Language 의 약어로 하이버네이트를 통해 데이터베이스를 검샐할 경우에 이용하는 쿼리입니다. HQL 을 하이버네이트가 어떤 데이터베이스를 이용하고 있는지 살펴보고 알아서 그에 맞는 SQL 로 변환하여 준다는 장점이 있습니다. HQL 은 SQL 에 비슷하지만 클래스의 프로퍼티를 쓴다는 점이 특징입니다!!! ^^ 중요중요 클래스의 프로퍼티!!!를 씁니다!!!
테스트 완성!!!!! ^-^ 용자님께서의 실행 ㄱㄱㄱㄱ
자, 이제 모든 과정이 끝났습니다. 실행 고고고곡ㄱㄱㄱㄱㄱ
에러를 뿜지 않고, 잘 화면이 떳으면 짝짝짝!!! ^^
http://localhost:포트번호/Shop/index.do
리스트 단만 부르는 것으로 했으니,
당연히 상품명을 클릭하면 에러를 뿜겠죠?~ ^^
차후에 HQL 쿼리문에 대해서 간단히 sumerry 해 두겠습니다. ^^
선수작업!!!!!!!!!!!! ^-^
이 블로그를 먼저 보신분은 http://joke00.tistory.com/116 의 middlegen 을 이용하여 hibernate의 hbm.xml 을 만드시거나 손수 손으로 hbm.xml 을 작성하시고 보시길 바랍니다!! 꼬~~~~옥!!!!!!!
그러기 위해서 첫번째로 해야 할 사항. 일단 내가 써야할 프레임 워크의 라이브 러리를 집어 넣는 것이 첫번째 사항이라고 생각됩니다. (라이브 러리만 잘 맞춰 주어도 불필요한 에러는 안 볼 수 있죠~ -ㅅ-;;; 이번에 필요한것만 간단간단하게 넣어보자 하고 몇개 빼 먹었더니... 다양한 에러를 감상해 보았습니다.. ^^ 뭐, 에러를 보고 파악하는 것도 개발자의 중요한 사항이라고 생각되지만... 이제 삽질은 그만~ 야근 없는 세상에서 살기 위해서는 삽질은 그만 해야 하겠쬬?! ^^)
hibernate 의 라이브 러리는 이곳 에서 다운받으면 될 것같은데..... 사이트가 많이 바뀌어 다운 받는 곳을 모르겠숨다 ;;; ㄷㄷㄷㄷ;; 그럴수도 있죠.. 정작 급하게 되면 어떻게든 알아낼텐데.. 전 급하지가 않습니다 -_-;;;
그래서 여기에 필요한 라이브러리를 첨부하도록 할께요~ ^^
하이버네이트 라이브 러리 hibernate-distribution-3.3.2.GA-dist.zip 을 받아서 풀게도면 lib 폴더 안에 required 폴더가 있습니다. 여기에 속해있는 jar 파일 모두와, hibernate3.jar 를 lib 에 추가해 주면 됩니다.
또 한가지 라이브 러리! commons-lang.jar 또한 필요합니다! why? 앞에서 middlegen 으로 만든 Item.jar 파일의 toString() 메소드를 보면 ToStringBuilder 가 있는데 이 클래스를 commons-lang.jar 에서 찾게 됩니다 ^^. ToStringBuilder 에 대한 에러가 날 경우에는 commons-lang.jar 를 추가해 주면 말끔하게 없어진답니다! ^-^ 후훗-
slf4j-log4j12-1.5.10.jar 파일도 필요합니다 ^^
더, 자세한 내용은 http://antop.tistory.com/53 를 참조하시기 바랍니다 ^^
자, 이제 라이브 러리 셋팅이 끝났으니 본격적으로 개발을 해보도록 하겠습니다.
* applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- DataSource 데이터 소스를 설정 합니다~ -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url"><value>jdbc:oracle:thin:@nerv-team.co.kr:1521:XE</value></property>
<property name="username"><value>아이디</value></property>
<property name="password"><value>패스워드</value></property>
</bean>
<!-- Hibernate Session Factory 설정 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- DataSource 데이터 소스를 설정 합니다~ -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url"><value>jdbc:oracle:thin:@nerv-team.co.kr:1521:XE</value></property>
<property name="username"><value>아이디</value></property>
<property name="password"><value>패스워드</value></property>
</bean>
<!-- Hibernate Session Factory 설정 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"><ref bean="dataSource"/></property>
<property name="mappingResources">
<property name="mappingResources">
<value>logic/Item.hbm.xml</value>
</property>
<property name="hibernateProperties">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
<!-- hibernate 에 맞는 Dao 설정 -->
<bean id="itemDao" class="dao.impl.ItemDaoImpl">
<!-- hibernate 에 맞는 Dao 설정 -->
<bean id="itemDao" class="dao.impl.ItemDaoImpl">
<property name="sessionFactory"> <ref bean="sessionFactory" /></property>
</bean>
<!-- ItemCatalog 서비스 호출부분~-->
<bean id="itemCatalog" class="service.impl.ItemCatalogImpl">
<property name="itemDao"><ref bean="itemDao" /></property>
</bean>
</benas>
<!-- ItemCatalog 서비스 호출부분~-->
<bean id="itemCatalog" class="service.impl.ItemCatalogImpl">
<property name="itemDao"><ref bean="itemDao" /></property>
</bean>
</benas>
* dataSource : 설정파일에서의 dataSource 를 참조
* mappingResources : 기존에 hibernate.cfg.xml 에서 설정하여 사용했던
<mapping resource="logic/Item.hbm.xml" /> 부분 입니다. hibernate 와 xml 을 mapping 해주던부분....
* hibernateProperties : hibernate 설정 하는 부분. dialect 에는 oracle 을 쓰기 때문에 Orcal10gDialect 를 써준것이고, 해당 db에 따라 설정 value 값이 틀려집니다. 맞게끔 써 주시면 된답니다~ ^^
hibernate.dialect : 사용하는 데이터베이스의 dialect
hibernate.show_sql : Hibernate 가 실행하는 sql 표시의 유무
************ 참고 ! *******************
<property name="mappingResources">
<property name="mappingResources">
<value>logic/Item.hbm.xml</value>
</property>
hbm.xml (매핑파일)이 여러개일 경우에는 2가지 방법이 있습니다.
1. 콤마로 구분
<value>logic/Item.hbm.xml , logic/test.hbm.xml ,.... hbm.xml </value>
2. xml 의 <list><value></value><value></value></list> 형태로 표현
hbm.xml (매핑파일)이 여러개일 경우에는 2가지 방법이 있습니다.
1. 콤마로 구분
<value>logic/Item.hbm.xml , logic/test.hbm.xml ,.... hbm.xml </value>
2. xml 의 <list><value></value><value></value></list> 형태로 표현
그리고는 hibernate 를 쓸 Dao 의 bean 에 대해서 ref (참조할 bean 에 대한 이름을 명시해 주면 됩니다
2. Dao Implements 의 java 파일 코딩을 시작합니다.
* ItemDaoImpl.java
일단 알아보기 쉽게 기존 소스 코드를 모두 지우고 시작합시다~ ^^ 이제 JdbcDaoSupport 는 안쓸꺼니깐요! ^^
JdbcDaoSupport 상속받아 썻었던 부분을 hibernate 를 쓰기 위해서는 HibernateDaoSupport 를 상속받을 껍니다.
package dao.impl;
import java.util.List;
import logic.Item;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import dao.ItemDao;
public class ItemDaoImpl extends HibernateDaoSupport implements ItemDao {
public List<Item> findAll() {
List<Item> item = getHibernateTemplate().find( "from logic.Item" ); //HQL
for (Item it : item) {
System.out.println("나타나세요~ :: "+it.getItemId());
} //system log 이건 뭐 데이터값이 제대로 나오는지 확인하기 위한것 입니다 ^^
return item;
}
public Item findByPrimaryKey(Integer itemId) {
// TODO Auto-generated method stub
return null;
}
}
import java.util.List;
import logic.Item;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import dao.ItemDao;
public class ItemDaoImpl extends HibernateDaoSupport implements ItemDao {
public List<Item> findAll() {
List<Item> item = getHibernateTemplate().find( "from logic.Item" ); //HQL
for (Item it : item) {
System.out.println("나타나세요~ :: "+it.getItemId());
} //system log 이건 뭐 데이터값이 제대로 나오는지 확인하기 위한것 입니다 ^^
return item;
}
public Item findByPrimaryKey(Integer itemId) {
// TODO Auto-generated method stub
return null;
}
}
getHibernateTemplate() 메소드를 이용하여 HQL 쿼리를 날릴겁니다.
참고로 HQL 쿼리의 hbm.xml 에 정의한 name 값으로 properties 명을 작성 안하면 에러 뿜습니다~
이렇게 name 이 logic.Item 이었기 때문에 from 테이블명이 logic.Item 이렇게 쓴 것 이랍니다.
* HQL ?
O/R 맵핑 툴의 하나인 Hibernate 는 HQL 에 의한 질의를 합니다. HQL 이란 Hibernate Query Language 의 약어로 하이버네이트를 통해 데이터베이스를 검샐할 경우에 이용하는 쿼리입니다. HQL 을 하이버네이트가 어떤 데이터베이스를 이용하고 있는지 살펴보고 알아서 그에 맞는 SQL 로 변환하여 준다는 장점이 있습니다. HQL 은 SQL 에 비슷하지만 클래스의 프로퍼티를 쓴다는 점이 특징입니다!!! ^^ 중요중요 클래스의 프로퍼티!!!를 씁니다!!!
테스트 완성!!!!! ^-^ 용자님께서의 실행 ㄱㄱㄱㄱ
자, 이제 모든 과정이 끝났습니다. 실행 고고고곡ㄱㄱㄱㄱㄱ
에러를 뿜지 않고, 잘 화면이 떳으면 짝짝짝!!! ^^
http://localhost:포트번호/Shop/index.do
리스트 단만 부르는 것으로 했으니,
당연히 상품명을 클릭하면 에러를 뿜겠죠?~ ^^
차후에 HQL 쿼리문에 대해서 간단히 sumerry 해 두겠습니다. ^^
'nerv-team.co.kr' 카테고리의 다른 글
[로지텍] 로지텍 마우스 A/S 방법 (0) | 2010.12.17 |
---|---|
[Spring] nerv-team.co.kr "MutilActionController" CH03.특정파라미터값 (0) | 2010.05.20 |
[Hibernate] Spring + Hibernate Mapping 준비 Middlegen Plugin 설치 (0) | 2010.05.19 |
[Spring] nerv-team.co.kr "Default MVC" CH02.상세 화면 보기 (0) | 2010.04.26 |
[Spring] nerv-team.co.kr "Default MVC" CH01.목록 띄우기 (0) | 2010.04.21 |