Spring Framework를 자주 사용하는 사람들은 이클립스에 Spring Tool을 설치하는것이 좋다.
아니면 STS를 직접 다운받아서 사용해도 좋다. (다운로드)

현재 사용하는 이클립스에 STS 플러그인을 설치하는 방법은 Marketplace에서 인스톨 하는 방법이 있고,
이클립스에 Marketplace가 없으면 아래 xml을 다운받아서 플러그인 인스톨 목록에 import해서 설치하는 방법이 있다.

(이클립스 버전에 맞게 주소를 수정해서 다운)


왠만하면 Marketplace에서 설치하는게 편하다.

'eclipse' 카테고리의 다른 글

이클립스 Marketplace.  (0) 2012.02.24
Hibernate Tool  (0) 2009.10.22
JadClipse.  (0) 2009.05.27
Subversive 설치  (0) 2009.04.16
요새 이클립스는 플러그인 설치가 쉬워졌다. Marketplace가 생겼는데.. 아마도 3.6버전부터 생겨난듯한......


혹시라도 없으면 직접 설치해도 된다. 상당히 편함 ^^


그러면 지원하고 있는 플러그인들을 검색해서 설치할 수 있다.

'eclipse' 카테고리의 다른 글

이클립스 Springsource Tool Suite(STS) 설치.  (0) 2012.02.24
Hibernate Tool  (0) 2009.10.22
JadClipse.  (0) 2009.05.27
Subversive 설치  (0) 2009.04.16

나름대로의 삽질을 통해 모듈별 라이브러리 정리를 하고 있다. 물론 샘플이지만 큰 그림으로 나눠서 공통으로 쓰이는 모듈..
DB는 mybatis, 또는 하이버네이트별로 모듈을 구분했고.. web쪽은 String, Struts2로 구분했다.
다 돌려보기엔 시간이 부족했고.. 하루종일 이짓만 하고 있을순 없었기에 예전에 날 괴롭혔던 하이버네이트를 먼저 돌려봤다. 역시 한번에 돌아갈리 없었고.. 라이브러리 추가 작업이 필요했다.


처음 프로젝트 관리를 이렇게 하려고 했다.
DB > Logic > Web Controller.. 이렇게 나누려고 했다.

큰 프로젝트 경험이 없어서 그런지.. 굳이 DB와 Logic을 구분해야 할지 의문이였다.

단순하게 큰 프로젝트에서는 당연히 나뉘지요. 라는 대답은 해보지 않아도 그냥 공감은 될것같은데..
저... DB단은 넘어온걸 그냥 넣기만 하는 단순 작업일텐데 1인이 DB/Logic개발을 맡아서 한다면 하나의 모듈로 개발해도 될지가 궁금했다.

......갑자기 또 떠오른게 있다. 직접 쿼리를 다루게 된다면 말이 틀려질수도 있겠구나 싶네...-_-;; 단순작업이 아닐테지..

아무튼 요즘 자꾸 내 직업에 대해 지속적인 관심을 갖고 언젠가 크게 발전하기 위해 이것 저것 해본다.
가만히 있는것 보다.. 노는것 보단 나을테니까.. 
결론은!! 지금까지 나만의 아키타입..
....이라는걸 고집해서 메이븐 공부를 시작했었는데, 아키타입이 중요한게 아니라, 제대로된 프로젝트 관리를 하기 위한 pom 설계를 잘해야한다는 생각이 들었다. (뻘짓하지말자-_-)

흠... 무언가 아직 불안정하다. 뭔가 쓸모있는 샘플 아키타입을 만들생각이였는데..
패키지명이 완벽하지가 않다.

예를들어서 아키타입내에서 소스 패키지가 net.ion.minato이다.
근데 이 아키타입 샘플소스를 생성할때 실제 사용하는 사람은 패키지명이 저것과 같지 않을 것이다.

${package}.util 이런식의 설정으로 패키지가 자동 생성될줄 알았으나 해보니 그렇지가 않았다.

 
소스내에서 package명은 프로젝트 생성시 설정한 패키지명이다.
그러나 실제 소스 디렉토리 구조는 package를 제외한 채로 생성되었다.

결국 샘플소스는 샘플일뿐인듯 싶다. 이로써 쓸만한 아키타입은 물건너갔다. -_-

하지만 지금까지 해봄으로 인해 메이븐이 이런것이구나 하는 느낌은 받았다.

현재는 박재성님이 쓰신 자바 세상의 빌드를 이끄는 메이븐 이란 책을 보면서 pom파일을 이용한 모듈 관리를 해보고 있다.
정말 제대로 이해하고 사용한다면 메이븐 빌드툴은 최고가 아닐까 싶다.

 
대략 50%이상은 이해하고 모듈별 pom을 만들어서 로컬에서 사용해보고 있다.
애초에 샘플 아키타입을 만드는것보다 훨씬 더 유용하게 쓰일것 같다는 생각이 든다.

그러나 생성이 안된다... 에러메세지는 보이나 해결법은 모르겠다는... ^^ 내 인생은 언제나 삽질인생인가보다..;

메이븐 프로젝트를 생성해서 parent로 groupId와 artifactId, version을 선언해주니까 잘 상속받는다...;;

 보면 알겠지만 아무것도 선언한게 없음에도 라이브러리와 프로젝트 기본구조를 살릴수 있었다.


 아직 회사에서는 메이븐을 사용하진 않지만 근무시간 외에 자주 접해서 메이븐을 내것으로 만들것이다. -_-;;

아이폰에서 사용하던 imessage를 맥 기기들에서 사용할수 있게 되었다. 다운로드

 
 아이챗과 통합이 된것인지.. 아이챗이 있던 아이콘이 메세지로 바뀌어있다.


아이폰에서 아이메세지가 나왔을 당시에도 아이챗과 연동됬으면 좋겠다 싶었는데 이렇게 나와주다니..
맥북 팔까 고민중이였는데 역시나 점점 기능이 좋아지니 못팔겠다.


버그인건지는 모르겠지만 나한테도 메세지를 보낼수가 있다는...?;;

이것말고도 게임센터, 노트등이 업데이트될 예정이라고 한다.

 

 자세한건 apple사이트를 참고합시다. ^^ 잡스님의 위대한 유산!! 영원하라~
prev

이제 만들어진 archetype을 써먹을수 있게한다.

archetype폴더 바로 아래있는 pom에서 Maven Build를 한다. 명령어는 archetype:update-local-catalog 이다.

 
별문제없이 빌드에 성공했을것이다. 그리고서 내가 만든 archetype으로 프로젝트를 생성해본다.

 
default local에 내가 배포한 아키타입이 있다..^^ 혹시 snapshot으로 아키타입을 만들었다면 아래 체크박스 include snapshot archetypes를 체크한다. 그리고서 프로젝트를 생성하면 맨 처음 작성했던  mywebproject구조와 샘플소스 HelloWorld, HelloWorldTest파일과 함께 생성될것이다.


추가적으로 archetype:update-local-catalog 명령어를 실행하게 되면 메이븐 root 폴더에... 음 그러니까... 로컬 저장소 바로 위.. 에 archetype-catalog.xml 파일이 생겨난다. 난 내가 지정한 메이븐 폴더에 생길줄 알았는데... 그런거 무시하고 이클립스 default .m2 폴더에 만들어주더라.


저 파일을 이클립스 maven 설정에 추가할수도 있고 아까처럼 그냥 default local 을 사용해도 상관없다.
쓰는 사람 편하게 쓰면 될듯...

이것으로 나만의 아키타입 만들기는 끝...

다음 포스팅은 쓸모있는 아키타입 만들기를 한번 해볼까 한다 -_-;;
(지금은 그냥 되는가 안되는가 해본 정도로 생각하자 ^^)

next

prev

앞에서 삽질한 프로젝트를 언제든지 불러다가 써먹을수 있게 해보자.


프로젝트에서 run.. maven build... 한다.


maven 명령어다. create-from-project... 일단 결과부터 보자...


일단 성공은 했고.... target폴더안에 어떤 파일들이 생겨났는지 보자..
(사실 실패해서 포기상태였다...-_- 현재 이클립스에서 사용하고 있는 메이븐 버전은 3.0.4버전.. 얘 안된다;;;
그래서 2.2.1버전으로 받아서 메이븐 빌드시 2버전을 사용하도록 했다... 된다..;; 아흑 ㅠㅠ;)

 


아 난처하다... 에러도 나면서 엄청난 구조의 파일들이 생겨났다...(target밑에 에러는 무시한다.)
복잡해도 유심히 살펴보자.
일단 generated-sources부터 시작인데.. 그 밑에 있는 archetype폴더를 지금 빌드해서 나온 결과물이라고 보면된다.

보면 archetype폴더 밑에 src와 target이 있다. 그말은 즉 저 archetype폴더자체가 프로젝트라고 보면 되는거다. archetype바로 밑에 있는 pom 파일에서 오른버튼으로 Maven build - Clean 을 해보자.
archetype 밑에 있는 target폴더가 없어졌을것이다.


깔끔하게 없어졌다... 다시 빌드해본다. 그냥 명령어 따로없이 Maven Build - Install 하면된다.
다시 target 폴더가 생겼을것이다.

 
중요한 결과물이 나왔다. archetype/target/mywebproject-archetype-0.0.1-snapshot이 만들어진것이다.
이것을 나만의 archetype이라고들 부른다..

지금까지 무슨짓을 한것이냐면..

 
메이븐에서 기본으로 제공하는 기본적인 web프로젝트를 생성했다. (maven-archetype-webapp)

근데 만들어보니 프로젝트 구조가 좀 눈에 안들어오고 폴더 뎁스도 쓸데없이 있고..맘에 안들었다.
그래서 수작업으로 메이븐 폴더 구조를 바꾸고 pom파일에 디렉토리 구조를 작성했다.

테스트삼아 HelloWorld.java와 HelloWorldTest.java도 작성해봤다.
그리고 archetype:create-from-project라는 명령어로 현재 보고있는 archetype을 만들었다.

이제 저 archetype을 어떻게 써먹는담??;;

사실 한가지 빼먹은 사실이 있다. Maven Build Install을 하면 무슨작업을 하나? target폴더에 빌드 결과물을 준다?
맞는말이다. 그러나 한가지 더 있다. 이클립스에서 인식하고 있는 로컬 repository에 결과물을 배포한다.

 
repository 밑으로.. 프로젝트 생성할때 줬던 groupId(net.ion.minato)와 artifactId(mywebproject) 구조의 버전 0.0.1-snapshot인 파일이 로컬에 배포된것이다.

아.. 설명이 너무 길어진다. next

prev

앞서말한 Effective POM 이 기본적인 뼈대인 만큼 확인해보는것이 좋다.

<build>안에서 디렉토리 구조를 변경하였다.
그래도 엑박이 난다면 프로젝트 > 오른쪽 버튼 > Maven > Update project confi..... 해보기 바란다.

 
이걸하기 전에 프로젝트 속성도 수정하였다. 이클립스 navigator로 확인하면 숨김 폴더가 있는데 .settings안에 파일들을 열어보면 버전들이 보이는데 많이 사용했던 버전으로 수정하였다.
(프로젝트 속성에서도 수정이 가능)


그렇게 해서 아주 기본적인 뼈대를 나만의 스타일로 수정하였다.


근데 내가 하고자했던 최종 목표는 이게 아니다. 다음 프로젝트때도 또 copy & paste로 이 뻘짓을 하지 않기 위함이였다..;

next

나만의 아키타입.. 말그대로 자기가 편하자고 쓰는 아키타입입니당~ 다른사람에겐 간단한 sample소스를 제공해줄수는 있겠군요. 지금에 와서는 괜히 아키타입에 목메달았단 생각을 해봅니다..; 

이제사 마음에 안정을 되찾고 쉬는날 다시 컴앞에 앉아 나만의 시간을 보낸다. 방황은 이제 그만 ^^


예전부터 관심은 많았는데 섣불리 프로젝트에 적용하지 못했던 메이븐을 다시한번 공부해보려한다.
그당시에도 참 맘에 안들었던건 메이븐의 디렉토리 구조였다.


봐라.. 이게 메이븐 기반의 웹프로젝트이다. webapp는 알겠는데
src/main/resource...? 그래 자바 파일을 작성하는 곳이겠지..

그래도 쓸데없는 디렉토리 뎁스.. 맘에 안드는 폴더구조를 강제적으로 폴더 구조를 바꾸면 메이븐이 인식을 못한다는..
pom 파일에서 디렉토리 구조를 설정해주면 된다는것 같더라... 그래도 매번 번거롭다.

뭔가 좋은 방법이 없나 이곳 저곳 둘러봤다. 그래서 지금 포스팅 하면서 시도해본다.


실제 코드와 테스트 코드를 분리하고 싶은데? 프로젝트 속성 > source탭에서 디렉토리 구조를 추가, 삭제, 변경하면 된다.

 

모.. src, test, webapp... 많이 익숙한 구조가 보인다.. 그러나 프로젝트에 엑박이....;;
강제적으로 폴더구조를 바꾸다보니 WEB-INF/web.xml을 못찾아서 웹프로젝트가 잠시 미쳐있다..

위에서 언급했듯이.. pom 파일에서 디렉토리 구조 등등.. 설정이 가능하다.

한번 바꿔보도록 하겠다. 


별것 없다. <build>내용에 디렉토리 구조만 추가했다. 처음 접할땐 저런게 있는지도 모른다. 나도 예전에 검색해보며 어깨너머로 본걸 이것저것 해봤을뿐;;

쉽게 접할수 있는 방법은 Effective POM 을 확인해보는것이다. 이클립스 pom editor 로 열어보면 확인 가능하다.


저게 최상위 설정파일이라고 보면된다. 메이븐 프로젝트를 생성하면 생성된 pom은 저 effective pom 파일의 내용을 상속받아서 생성이 된다. 그래서 아무 설정없이 기본설정만으로도 빌드가 가능한것이고..
저 상위에 설정된 디렉토리 구조때문에 지금 이짓을 하고 있는것이다.

여튼 -_- 아.. 다음장에서.. 너무 길어진다. 아직까지 친숙하지 않아 날 열받게하는 메이븐....

next

예전부터 메이븐 프로젝트를 통해 라이브러리를 추가할때 항상 오라클이 문제였다.
라이센스때문인지 저장소에서 다운받지 못했었다.

그래서 그냥 프로젝트 lib 폴더를 만들어서 빌드패스로 잡아줬었는데 또 문제가 빌드할때 수동으로 넣은 라이브러리는 무시하고 빌드를 하는것이다.


 요즘들어 메이븐 쓰시는분들이 많아서인지 쉽게 찾아볼수 있더라..^^

 
이런식으로 잡아주면 빌드할때 저 경로에 있는 < lib/ojdbc14.jar > 파일을 포함해서 빌드한다.

근데!! 윈도우에서 할땐 저게 됬었다! 집에 작업할수 있는 컴이 맥북밖에 없어서 해보던찰나.....
이상하게 맥에서는 basedir을 찾지 못하는것이다! ;;


이유는 모르겠다. os 자체 환경변수에 메이븐을 추가하지 않아서 그런건지는 모르겠으나...
맥os를 잘 다루는편이 아니라서 환경변수는 잡지 않았다 -_-;;

그래서 맥에서는 일단 꼼수를 부렸다 ㅠ.ㅠ;;

 

빌드 디렉토리는 읽히는것이였다... 그래서 맥에서는 이렇게...ㅜ.ㅜ;; 할수밖에 없었다.


결론은...
윈도우에서 잘 되던게 집(맥북)에서 안돌아간다니 놀래서 봤더니 jdbc드라이버를 못찾는것...
맥북에서는 basedir이 잡히지 않던 문제...
꼼수를 부릴수밖에 없는 저 어이없는 path....;; 맘에들지 않아~ 


"mysql  -u 사용자명 -p 데이터베이스이름"
"mysql -u root -p" 라고 입력합니다.

아직 계정을 만들지 않았으므로 루트 계정을 사용해서 mysql에 접속하였습니다.
비번은 mysql 설치했던 그 비밀번호를 적어줍니다.


외부접속 허용.

mysql을 처음 설치하고 로컬이 아닌 외부에서 mysql 에 접속하려고 하면 
ERROR 1130 (HY000): Host '121.165.82.xxx' is not allowed to connect to this MySQL server
와 같은 에러를 내며 접속이 안된다.

mysql 에서 사용하는 아이디에는 접속이 허용가능한 네트워크를 지정할 수 있는데
이게 처음 root 에는 localhost 로만 설정되어 있어 로컬에서 밖에 접속을 할 수 없다.

이를 해결하기위해선 로컬에서 mysql 에 접속한다음 mysql 데이타베이스에서
mysql> grant all privileges on *.* to root@"%" identified by '????????' with grant option;
라고 치면 된다 ???? 부분은 root 의 암호다.


갤스를 쓰면서 그냥 스마트폰을 사용하는걸로 만족하고 살랫는데.. 아무래도 개발일을 하고 있다보니 한번쯤은 개발해봐야 하지 않겠나 싶어서 준비만 해보려고 한다.

일단 기본적으로 손에 많이 익은 이클립스(클래식 3.6.0)를 사용한다. 전 따로 사용하고 있는 이클립스가 있지만 처음 하시는분들은 아래와 같은걸 다운 받으면 될것 같다.

 

이클립스에서 안드로이드 관련된 툴을 설치한다.
Help > Install New Software... > Name (ADT) > Location (http://dl-ssl.google.com/android/eclipse/)



다음은 안드로이드 SDK를 다운받아서 이클립스에서 사용할수 있게 한다.
http://developer.android.com/sdk/index.html



안드로이드 SDK 경로를 잡아준다.
Window > Preferences > Android



안드로이드와 관련된 모든 패키지를 다운받는다.



이 부분이 상당히 오래 걸린다.


이제 에뮬레이터를 돌리기 위한 준비를 해보자.



 


해상도 관련된 설정이라고 하는데, 현재 저처럼 초보 상태라면 그냥 Launch 를 눌러주면 될것 같다.


대충 이런 결과가 나오는구나.. -_-

얼레.. 더 기다리니 핸드폰과 비슷한 화면으로 바뀌었다!

 

터미널에서

defaults write com.apple.Finder AppleShowAllFiles YES

이렇게 입력 해주고 파인더를 한번 강제종료 해주면 숨은 파일들이 다 보이는 걸 보실 수 있습니다. 
물론 다시 감추시려면

defaults write com.apple.Finder AppleShowAllFiles NO


오라클 엔플쓰다가 xe쓰니까 먼가 이상해서 색다른 디비를 알아보던차.. 큐브리드를 사용해봤는데.. 첨엔 괜찮았다.....

아니 근데 이게 왠걸.. 하이바네이트에서 foreign key를 못잡아준다...... 설정을 잘못했나 싶어서 오라클에서 스키마 export해봤지만.. 큐브리드에서는 못잡는다....

Date타입도 년월일만 인식하고... 시간분초... 제대로 사용할수 없다.
TIMESTAMP도 insert는 다 되는데 출력은 안된다........

아직 하이버네이트측과 큐브리드 측이 친하지 않은건지............
빨리 친해지길 바래 -_-;;

postgresql 을 써봐야 하나.....

'Database > Hibernate' 카테고리의 다른 글

Hibernate Log4j 설정.  (0) 2009.10.24
CRUD Test.  (0) 2009.10.24
SchemaExport.  (0) 2009.10.24
Hibernate Code Generation..  (0) 2009.10.23
Hibernate 도전!  (0) 2009.10.22

log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

가장 많이 쓰일듯 싶다. 실행된 쿼리문을 로그로 찍는것과.. 넘어온 파라미터 값을 확인할 수 있다.

### log just the SQL (hibernate.cfg.xml 설정과 겹친다. hibernate.show_sql = false 한다.)
log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
(log4j 1.2.15 쓰는데.. debug로 하면 안나오더라..)
log4j.logger.org.hibernate.type=TRACE

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
log4j.logger.org.hibernate.cache=info

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

'Database > Hibernate' 카테고리의 다른 글

큐브리드 foreign key.....  (0) 2010.07.04
CRUD Test.  (0) 2009.10.24
SchemaExport.  (0) 2009.10.24
Hibernate Code Generation..  (0) 2009.10.23
Hibernate 도전!  (0) 2009.10.22
Schema Export 보기.

이제 디비에 insert, update, del.... 간단한 테스트를 해봅니다.
해보니까 알아서 쿼리문 사용하고.. 편하긴 편한거 같은데... (뭔가 찝찝..)

일단 지저분한 테스트 코드로 데이터를 넣어봤습니다. 말그대로 Insert 하는것이고..
그냥 객체 생성해서 save하면 끝나는거 같네요. 물론 하이버네이트에는 많은 기능들이 있을테지만..
save뿐이 모르기에 ^^


테스트 돌려보니 역시나 콘솔창에서 알아서 쿼리문을 만들어서 집어넣는거 같습니다.
음.. 넘어온 파라미터들까지 볼 수 있으면 좋을텐데요.........
어딘가 그런 설정이 있을거 같은데.. 없으려나 ㅎㅎ [ Log4j 설정 보기 ]


삭제와 수정을 해보기에 앞서 DB에서 객체를 가져오는거 먼저...
(일단 매번 session을 얻어오고 transaction.. try ~ catch 해주는 중복 코드는 인터페이스와
추상클래스로 제거했습니다.)


- get : 호출 시점에서 select 쿼리 실행.
- load : 객체의 값이 실제로 필요한 시점에 쿼리 실행.

정말 간단합니다...........
나머지 수정과 삭제를 해봐야 하는데.. select 된 객체를 넣어주면 끝납니다.....


당연한 얘기지만.. 가져와서 수정을 하네요.
근데 이렇게 되면 매번 수정을 하기 위해선 select를 무조건 실행해야합니다.

그럼 이렇게 해보는건?? (사실 전 첨에 이렇게 했었습니다만..........)



결과는...


저도 되지 않을까 싶었는데.. board.hbm.xml에 설정하기를 writer 컬럼은 not-null로 설정해서
업데이트 할때에도 넣어줘야 하나보드라구요. 수정이 필요없는 데이터까지 억지로 넣어줘야 하는..
할튼 그 방법은 좀 별로인듯 싶네요.

그리고 이 방법을 쓰려면 equals 메서드를 구현해줘야 한다는거 같네요.
그건.. 예전 설정 파일에서 mata 속성을 설정했던적이 있는데 저 상태로 generation하면
도메인 객체에 저 메서드들이 오버라이딩 된다고 했었습니다.



이런식으로 오버라이딩 되서 만들어집니다.
이 메서드가 없다면 위 방식의 업데이트는 이루어지지 않습니다.



Delete부분은 Update와 같기때문에... 알아서;;

정말 기본적인 CRUD 해봤는데 아직 하이버네이트에 기능들을 다 몰라서 이정도뿐이 안되는군요.
일단 여기서는 HQL을 쓰지 않았습니다.

공부.. 해도 해도 끝이 없습니다.... ㅅㅂ;;

'Database > Hibernate' 카테고리의 다른 글

큐브리드 foreign key.....  (0) 2010.07.04
Hibernate Log4j 설정.  (0) 2009.10.24
SchemaExport.  (0) 2009.10.24
Hibernate Code Generation..  (0) 2009.10.23
Hibernate 도전!  (0) 2009.10.22
이전 맵핑 설정 / Generation 보기.

하이버네이트 설정... sessionFactory 얻어오기.. 그리고 도메인 객체까지 Generation 했습니다.
그것을 바탕으로 DB 스키마 생성을 해보도록 하겠습니다.

비교적 간단합니다.

sc.create(false, true);


첫번째 인자값은 script를 확인 할껀지..
두번째 인자값은 실제 DB에 스키마를 생성할껀지 조건입니다.



Junit으로 실행 후 실제 DB 확인 결과 앞전에 board.hbm.xml 에 설정했던대로 테이블이 생성됬습니다.



이번에는 sql문을 확인해보겠습니다.


이런식으로 콘솔창에서 확인해볼수 있습니다. 근데 각 쿼리문에 ';' 이 빠졌네요.

실행해서 확인된 쿼리문은 hibernate.cfg.xml에서 mapping resource에 등록된 맵핑 파일에 대해서만 출력합니다.

이번엔 쿼리문 확인과 그 sql 쿼리문을 파일로 저장해보겠습니다.


sc.setDelimiter(";"); // 각 쿼리문에 ';' 추가.
sc.setOutputFile("src/schema.sql"); // 저장 위치 지정.
sc.create(true, false); // DB와 상관없이 스크립트 관련해서 생성합니다.

CRUD Test.

'Database > Hibernate' 카테고리의 다른 글

큐브리드 foreign key.....  (0) 2010.07.04
Hibernate Log4j 설정.  (0) 2009.10.24
CRUD Test.  (0) 2009.10.24
Hibernate Code Generation..  (0) 2009.10.23
Hibernate 도전!  (0) 2009.10.22
이전 하이버네이트 설정 보기.

맵핑 파일을 자바 코드로 만드는 방법입니다.
일단 맵핑 파일을 작성해야 합니다.


 여지껏 해오던 간단한 게시판을 작성해보겠습니다.

작성방법은 그리 어렵지 않습니다. id는 Primary Key 정도로 생각하시면 되고,
property는 실제 모델 객체에 데이터라고 보시면 되요. 물론 그 안에 DB 컬럼 같이 하면되구요.



제일 처음에 설정 파일 내용에 맵핑파일을 추가해주세요.


그러면 아래와 같이 클래스 Board가 인식되야 합니다.




그러면 이제 자바 코드로 변환할 수 있습니다.




프로젝트를 지정하고 코드로 변환할 곳을 지정합니다.
src로 하면 되고 패키지 경로는 설정 파일에 명시되어 있었죠..




Domain code를 선택하고 Java 5 버전 syntax를 사용합니다.



Apply -> Run 하게 되면..



저렇게 자바 파일이 생성됩니다. 내용은 직접 Generator해서 확인하기 바랍니다.

Schema 생성하기.

'Database > Hibernate' 카테고리의 다른 글

큐브리드 foreign key.....  (0) 2010.07.04
Hibernate Log4j 설정.  (0) 2009.10.24
CRUD Test.  (0) 2009.10.24
SchemaExport.  (0) 2009.10.24
Hibernate 도전!  (0) 2009.10.22


http://download.jboss.org/jbosstools/updates/stable/

'eclipse' 카테고리의 다른 글

이클립스 Springsource Tool Suite(STS) 설치.  (0) 2012.02.24
이클립스 Marketplace.  (0) 2012.02.24
JadClipse.  (0) 2009.05.27
Subversive 설치  (0) 2009.04.16
그나마 iBATIS를 쪼금 쓸줄 알겠다 싶었더니.. 왠걸 하이버네이트를 배우게 되었다....
일단 모르는것 투성이인 상태로 블로깅 하게 된점 정말 안타깝고 혹시라도 이 글을 보시는 분들께 죄송하단 말씀드려요 ^^;;
(
조언이라도 좀 해주시던가! ㅋ)

테스트 환경은 예전부터 해오던.. Dyna...Web... Proj...t 에서.. 해봤습니다.

앞으로도 계속 스프링 기반으로 웹 프로젝트를 공부할꺼라서 기존 라이브러리에 추가했는데..
hibernate3.jar만 추가하면 되는가 싶었는데 실행해보니 모가 없다고 에러나서
에러에 맞게 라이브러리 추가해보았습니다. (헛.. 맨 위 dom4j도 없으면 안되요 ^^)



hibernate tool을 설치했다면 저런 메뉴가 있을겁니다. Configuration 파일을 먼저 생성합니다.



설정파일은 WEB-INF에 위치할것이며 아래처럼 아는부분만 일단 입력했습니다.
저는 Driver class 셀렉트 박스에 아무것도 없어서 직접 쳤습니다.
그러니까 Connection Url은 셀렉트박스에서 선택 가능하더군여;;

제일 아래 Create a console.... 꼭 체크 ^^



아래와 비슷한 내용의 설정 파일이 생성됬을겁니다. 그 외에 없는 내용은 추가적으로 넣었습니다.
보면 아시겠지만 정확히는 모릅니다. 앞으로 공부해야겠죵~

* hibernate.hbm2ddl.auto
 create : sessionFactory가 작동할때 스키마를 삭제하고 다시 생성.
 create-drop : sessionFactory가 끝날때 스키마 삭제.
 update : 도메인 객체와 DB 스키마를 비교해 변경된 내용이 있으면 도메인 객체에 맞춰 스키마 변경
             (근데 해봐도 안됨 ;; 둘중에 하나라도 틀리면 에러 토해냄.. 어떻게 하는건지 ^^)
 validate : sessionFactory 시작할때 도메인 객체와 DB 스키마가 같은지 확인.



그러면 저 설정파일로 sessionFactory[각주:1]를 가져올수 있는지 테스트 해봅니다.
Junit3.8.2 버전으로 테스트 했습니다.



Junit도.. 아직 어색하네요 ^^;;



예상했던데로 정상 실행 되는군여..


hibernate.cfg.xml 파일이 src폴더에 있다면 이렇게 해도 됩니다.
conf = new configuration().configure();

Mapping File 작성 방법 보기.

  1. 바이트 코드 프로세싱이나 코드 생성이 아니라, 하이버네이트는 클래스의 퍼시스턴스 프로퍼티를 얻어오기 위해서 런타임 리플렉션을 이용한다. 저장되는 객체는 퍼시스턴스 필드와 필드 간의 관계에 대한 정보를 제공하는 매핑(mapping) 문서에 정의가 된다. 매핑 문서는 애플리케이션이 동작하면 컴파일되고, 클래스에 필요한 정보를 가진 프레임워크를 제공한다. 뿐만 아니라 매핑 문서는 데이터베이스 스키마 또는 Stub 자바 소스 파일생성 등의 기능을 이용할 때 사용된다. 매핑 문서의 컴파일된 컬렉션으로부터 SessionFactory 객체가 생성된다. SessionFactory는 Session 인터페이스로 퍼시스턴스 클래스를 관리하기 위한 매커니즘을 제공한다. Session 클래스는 퍼시스턴스 데이터 저장과 애플리케이션 간의 인터페이스를 제공한다. Session 인터페이스는 JDBC 연결을 래핑(wrapping)하고 있다. 이 JDBC 연결은 사용자에 혹은, 하이버네이트로부터 관리될 수 있다. [본문으로]

'Database > Hibernate' 카테고리의 다른 글

큐브리드 foreign key.....  (0) 2010.07.04
Hibernate Log4j 설정.  (0) 2009.10.24
CRUD Test.  (0) 2009.10.24
SchemaExport.  (0) 2009.10.24
Hibernate Code Generation..  (0) 2009.10.23

+ Recent posts