[NetBeans] 넷빈즈를 이용한 Hibernate 초간단 예제1 - Hibernate 셋팅

에 이어서-_-;

이제 셋팅은 다 된 것 같으니, 이 데이터를 가져와봅시다.
Hibernate에서 쉽게 데이터를 가져올 수 있도록 Helper클래스를 만들어봅시다.

Ctrl + N -> Java -> Java Class -> Class Name은 ScoreHelper, Package는 wondergirlshibernate로 합니다.

ScoreHelper.java
[code]package wondergirlshibernate;

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import wondergirlshibernate.entity.Score;
import wondergirlshibernate.util.HibernateUtil;

public class ScoreHelper {
Session session = null;

    public ScoreHelper() {
        this.session = HibernateUtil.getSessionFactory().openSession();
    }

    public List<Score> getWondergirlsScore() {
        List<Score> wondergirlsScoreList = null;

        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Score");
            wondergirlsScoreList = (List<Score>) q.list();
        } catch (HibernateException e) {
            e.printStackTrace();
        }
        return wondergirlsScoreList;
    }
}
[/code]
getWondergirlsScore를 보면 from Score를 실행하는 것이 다 입니다. 그리고, 그 리스트를 받아오는 거죠.

Main클래스를 봅시다.
Main.java
[code]package wondergirlshibernate;

import java.util.List;
import wondergirlshibernate.entity.Score;

public class Main {

    public static void main(String[] args) {
        ScoreHelper helper = new ScoreHelper();

        List list = helper.getWondergirlsScore();

        System.out.println(
                String.format("%10s %10s %10s %10s", "이름", "나이", "국어", "수학"));
        for (int i = 0; i < list.size(); i++) {
            Score score = (Score) list.get(i);

            System.out.println(
                String.format("%10s %10s %10d %10d",
                    score.getWondergirls().getName(),
                    score.getWondergirls().getAge(),
                    score.getKorean(),
                    score.getMath())
            );
        }
    }
}
[/code]
그냥 출력합니다-_-; 결과는 이렇게 나올 겁니다.
[code]Hibernate: select score0_.idx as idx1_, score0_.widx as widx1_, score0_.korean as korean1_, score0_.math as math1_ from wondergirls.score score0_
        이름         나이         국어         수학
Hibernate: select wondergirl0_.idx as idx0_0_, wondergirl0_.name as name0_0_, wondergirl0_.age as age0_0_ from wondergirls.wondergirls wondergirl0_ where wondergirl0_.idx=?
        선예         20        100        100
Hibernate: select wondergirl0_.idx as idx0_0_, wondergirl0_.name as name0_0_, wondergirl0_.age as age0_0_ from wondergirls.wondergirls wondergirl0_ where wondergirl0_.idx=?
        선미         20         90         90
Hibernate: select wondergirl0_.idx as idx0_0_, wondergirl0_.name as name0_0_, wondergirl0_.age as age0_0_ from wondergirls.wondergirls wondergirl0_ where wondergirl0_.idx=?
        소희         17         80         80
Hibernate: select wondergirl0_.idx as idx0_0_, wondergirl0_.name as name0_0_, wondergirl0_.age as age0_0_ from wondergirls.wondergirls wondergirl0_ where wondergirl0_.idx=?
        예은         17         70         70
Hibernate: select wondergirl0_.idx as idx0_0_, wondergirl0_.name as name0_0_, wondergirl0_.age as age0_0_ from wondergirls.wondergirls wondergirl0_ where wondergirl0_.idx=?
        유빈         21         60         60
BUILD SUCCESSFUL (total time: 3 seconds)
[/code]
음... 저기서 wondergirls참조하는 것을 가져오려고 하면 다시 쿼리를 날리는 군요-_-; 뭔가 다른 방법이 있는 건가...
Hibernate를 더 공부해봐야겠습니다. 넷빈즈에서 쉽게 Hibernate를 할 수 있네요. 예전에 Hibernate Hello World예제를 따라해보고 셋팅에 겁을 먹은 기억이 있었는데, 쉽게 할 수 있네요.
이제 공부를 해봅시다 ㅠㅠ

 
Posted by 머드초보
,
 
오....간만에 초간단 시리즈-_-;
그냥 넷빈즈6.5가 새로 나와서 Hibernate도 공부해볼 겸 해서 삽질을 좀 해봤습니다. Hibernate를 공부하고 있는데, 왜이렇게 어렵죠ㅠ 아직도 잘 모르겠습니다. 좋은 자료가 있으시면 댓글로 좀 알려주세요 ㅠ(굽신굽신 ㅠ)

넷빈즈6.5 JDK6U10환경에서 해봤습니다.

File New Project -> Java -> Java Application 선택.
Project Name은 WondergirlsHibernate로 하고 Finish!(원더걸스를 예제로 해야 접근성이 좋은..-_-)

Mysql에다가 DB를 만들어봅시다.
첫번째 테이블은 wondergirls에 대한 정보를 나타냅니다. 이름과 나이가 있습니다.
[code]CREATE TABLE  `wondergirls`.`wondergirls` (
  `idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `age` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `wondergirls` (`idx`,`name`,`age`) VALUES
 (1,'선예',20),
 (2,'선미',20),
 (3,'소희',17),
 (4,'예은',17),
 (5,'유빈',21);
[/code]
두번째 테이블은 과목점수를 나타냅니다. widx 칼럼이 wondergirls테이블의 idx와 FK로 연결되었습니다.
[code]CREATE TABLE  `wondergirls`.`score` (
  `idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `widx` int(10) unsigned NOT NULL,
  `korean` int(10) unsigned DEFAULT NULL,
  `math` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`idx`),
  KEY `FK_score_1` (`widx`),
  CONSTRAINT `FK_score_1` FOREIGN KEY (`widx`) REFERENCES `wondergirls` (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `score` (`idx`,`widx`,`korean`,`math`) VALUES
 (1,1,100,100),
 (2,2,90,90),
 (3,3,80,80),
 (4,4,70,70),
 (5,5,60,60);
[/code]
넷빈즈에 Mysql을 추가를 안하셨다면 추가를 하셔야합니다.
왼쪽에서 Projects탭 말고,  Services탭을 클릭합니다. Register Mysql를 클릭해서 정보를 입력하여 추가합니다. connect했을 때 db가 보인다면 추가가 잘 된 것입니다. start나 stop도 이곳에서 관리하려면 추가로 입력하시면 되는데, 입력안하고, 외부에서 실행하고 종료해도 상관 없더군요.

그러면 다시 Projects탭으로 돌아와서.....프로젝트이름에 대고, 오른쪽버튼 -> New -> Hibernate -> Hibernate Configuration File선택 -> Name and Location에서는 그냥 Next -> Database Connection은 방금 추가한 테이블이 있는 Mysql의 db를 선택합니다. Finish를 누르면 각종 설정화면이 나옵니다.
여기서 Optional Properties -> Configuration Properties에 add하고, hibernate.show_sql을 true로 설정한 것을 추가합니다. 이제 XML로 보면 이렇게 보일겁니다.
[code]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/wondergirls</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">mudchobo</property>
    <property name="hibernate.show_sql">true</property>
  </session-factory>
</hibernate-configuration>
[/code]
설정하기 편하게 되어있군요. 다 뭐하는 건지는 하나씩 해봐야 알 것 같아요 ㅠ 우선은 sql쿼리만 볼 수 있도록 하고-_-;

이제 HibernateUtil을 추가합니다. 설정파일을 통해 session을 가져오는 유틸인 듯 합니다.
Ctrl + N -> Hibernate -> HibernateUtil.java 선택.
Class Name은 New를 뺀 HibernateUtil, Package는 wondergirlshibernate.util로 합시다. Finish를 누르면 자동으로 생성됩니다.

이제 매핑파일을 가져옵시다.
Ctrl + N -> Hibernate -> Hibernate Mapping Files and POJOs from Database 선택.
Name and Location에서는 그냥 Next.
hibernate.cfg.xml이 자동으로 선택이 되는데, 거기에 방금 생성한 테이블이 있을 겁니다.
사용자 삽입 이미지
score를 추가하면 wondergirls는 따라옵니다. 서로 연결이 되어있어서 필요합니다. Next한다음에 Package에 wondergirlshibernate.entity로 하고 Finish를 클릭합니다.

이제 entity도 만들어졌으니, HQL을 테스트해볼 수 있습니다.
Source Packages -> default package -> hibernate.cfg.xml에 오른쪽버튼 클릭 후 Run HQL Query를 클릭하면 쿼리를 날릴 수 있습니다. 아래와 같이 날려봅시다.
[code]from Score[/code]
사용자 삽입 이미지
이렇게 결과를 볼 수 있습니다.
별 것도 없는데 글이 길어 지네-_-; 다음 글에-_-;

[NetBeans] 넷빈즈를 이용한 Hibernate 초간단 예제2 - 데이터가져오기.


참조글 : http://www.netbeans.org/kb/docs/java/hibernate-java-se.html
 
Posted by 머드초보
,
 
사용자 삽입 이미지

우선 내용구성이나 케릭터별 특징을 나타내는 데에는 조금 약한 면이 있었네요. 처음에 스피드한 전개로 6명의 데블스가 구성이 되고, 각각의 케릭터가 명확하지 않아서 조금 헷깔린 면이 있었네요(이건 내가 머리가 나빠서 그런 것일 수 있음 ㅠ)

이 영화를 보는 내내 느끼는 점은 영화가 아니라, 콘서트 동영상을 보는 것 같았어요. 조승우씨 노래 잘하던데요?^^ 암튼, 영상에 노래하며 공연하는 부분이 절반 정도 되는 것 같구요. 동원된 보조출연자들의 신나는 연기에 저도 막 신이 나더라구요 ^^

신민아씨의 약간의 노출(?)신 등을 볼 수 있습니다-_-; 맘에 듭니다-_-;

아.....그리고, 마지막에 끝나서야 알았는데, 이 데블스라는 그룹이 실제로 존재했다는 것이 나옵니다. 검색해보니 실화를 바탕으로 각색한 영화더군요.

우선 내용전개와 영화 구성은 좀 맘에 안들지만 ^^ 공연을 직접 보는 것 같은 영상과 음악, 그리고, 조승우의 멋진 보컬(소울!)목소리는 맘에 드네요 ^^ 올해 영화제에서 음악상부분을 받았던데 ^^

저는 별 5개 만점에 4개를 주고 싶군요 ^^
 
Posted by 머드초보
,
 
음...-_-; 원래 저는 Sun과 Adobe진영입니다만-_-; MS기술도 배우고 싶은(아직은 관심만 계속 가지고 있는 ㅠ) 욕망에 훈스닷넷 실버라이트 컨퍼런스에 갔습니다.

이런...강추위가......-_-; 너무 추웠습니다. 가는 길도 멀고 ㅠ 가는 길이 멀어서 영화를 pmp에 담아갔죠^^

암튼, 조금 늦게 도착을 해서 보니 강의를 진행하고 있더군요.
2008 IT 트렌드를 돌아보며 인 것 같은데요. 오픈과 개방에 관해서 설명을 해주셨어요. 들어가니 오픈아이디를 말하고 있었는데, 제가 요즘 삽질하고 있는 부분이라 좀 반가웠습니다^^

UX가 없는 UX이야기
김영욱님이 말씀해주셨는데요(굉장히 재미있는 강의를 하시는 분인데^^ DevDays에서는 그냥 강의만 하셨네요-_-) UX에 대해서 매우 잘 설명해주셨어요. 어떤 프로그램을 사용하게 되면 어려운 인터페이스와 난잡하고 화려하기만한 UI는 빵점이죠. 편의성과 직관성! 이 애플리케이션을 사용할 때 한눈에 알아볼 수 있게 조작할 수 있고, 직관적인 방법으로 조작할 수 있는 인터페이스라면 사용자를 생각한 완벽한 애플리케이션이 될 수 있을 듯 합니다^^
엔터프라이즈환경에서는 업무에 포인트를 맞춰서 개발해야하고, 대쉬보드는 직관성있게 개발해야하고~ 등등의 좋은 얘기를 해주었습니다.

김대리의 아찔한 협업이야기
동영상으로 제품광고를 찍으셨습니다. 개발자와 디자이너간의 협업을 쉽게 할 수 있다는 내용인데, 제 눈에는 마이크로소프트 익스프레션과 비주얼스튜디오 광고영상으로 보였습니다-_-;
그리고 나서 실제로 디자이너와 개발자간의 협업하는 모습을 라이브로 보여주셨는데요. 마소툴들은 눈에 익숙하지 않아서 잘 몰르겠지만, 매우 손쉽게 그래픽을 만들고, 로직을 짤 수 있군요. 개발자와 협업간에 연동도 매우 잘 되어있구요^^ (Adobe RIA Camp에서도 개발자와 디자이너의 협업을 강조했죠^^)

최고의 데모를 찾아라.
음.....첫번째 데모는 지도에 글을 쓰는 매쉬업 사이트인데요. 이 정도의 서비스는 다른 곳에도 더 있지만, 이 Spatial wiki라는 서비스는 지도이동이 매우 역동적인 것이 인상적이더군요. 지도는 마이크로소프트의 버추얼 어스인데, 한국지도는 좀만 줌인해도 사진이 없군요 ㅠ
http://spatialwiki.com/
그다음, 데모는 프랑스 쪽 사이트인데, 라이센스에 대한 설명을 매우 쉽게 설명해 놓은 사이트입니다. 꽤나 인상 깊었던 것이 어떤 사람이 나와서 사이트에 대해서 막 설명해줍니다. 매우 알기 쉽게 사람이 직접 설명해주는 특징이 있었습니다. 하지만 몇 번 보면 이 아저씨가 질릴 것 같네요. 하지만, 매우 신선한 인터페이스였습니다^^

Silverlight Story, 그와 그녀의 사정/현업에서 바라본 실버라이트 서비스
flash를 전문으로하는 웹에이전시회사인데, 실버라이트를 도입한 이유를 설명했는데요. 그 이유가 데이터 연동 때문이라고 한 것 같아요. 잘 못들은 것 같기도하고-_-; DB와 XML연동부분을 말한 것 같은데, Flash에서도 그리 어렵지 않게 할 수 있는데 ^^ 암튼 뭐 제 생각이구요^^ 실버라이트는 더 쉽게 할 수 있는 것 같더군요.
실제 현업에서 쓰고 있는 실버라이트를 보여줬는데, 실버라이트로 엔터프라이즈환경의 개발의 예를 보여줬는데, 매우 대단했습니다. 난 언제쯤 저 정도의 개발을 해볼까? 라는 생각이 드네요^^ 실버라이트가 많이 활성화가 안되었고, 많은 사람들이 동영상 기능 외에는 별볼일 없다라고 말하지만, 오늘 저것을 보고, 엔터프라이즈환경에서도 결코 꿀리지 않는다라는 생각이 드네요^^

최고의 데모를 찾아라2
음...SmoothHD를 보여줬는데, 고화질의 영상을 보여주는 사이트입니다. 이제 웹브라우저에서도 고화질의 동영상을 감상할 수 있군요^^ 플래쉬에서도 미디어 서버라는 것을 내놓았는데 거기서도 HD급동영상이 재생이 되는 데모를 본 것 같네요. MS와 Adobe가 보이지 않는 전쟁을 하고 있습니다-_-;
http://www.smoothhd.com/
또 다른 데모는 건담매니아를 위한 사이트인데, 건담조립설명서 같은 것을 한번에 한페이지만 보여줄 수 있었는데, 실버라이트의 DeepZoom을 이용해서 한페이지에 여러개를 볼 수 있도록 만든 사이트입니다. 실버라이트의 큰 장점은 DeepZoom인 것 같습니다. 너무 좋은 기능이네요 ^^

중간에 전문가에게 물어라 라는 시간에서 Flash10에서 하드웨어 가속이 된다고 하셨는데, Flash10에서도 안돼요 ^^

DEEP ZOOM 서비스 전략/실버라이트의 네트워크서비스/PPTLIGHT의 소개및 구현분석
Deep Zoom에 대한 원리와 간단한 비지니스 전략을 설명해주었습니다. 또한 충격적인 발언을 좀 들은 게 있는데, C++보다 C#이 더 빠르다라고 얘기를 한 것 같아요. 음...역시 마소에서 만든 언어라 윈도우에서 최적화를 시킨거군요.
실버라이트의 네트워크서비스는 WebClient라는 클래스에 대해서 소개를 해주었는데, flex의 HTTPService 이상의 기능을 가진 것이군요. 영상, 이미지, 텍스트, 패키지 등의 데이터를 가져올 수 있습니다. 제일 신기한 것은 압축한 zip파일 안에 내용도 읽어올 수 있다는 겁니다. 뭐 가져와서 푸는 건지 어쩐지는 모르겠고, 네트워크의 리소스를 절약하기 위한 전략인 것 같군요.
PPTLIGHT는 실버라이트로 구현된 웹ppt뷰어인데요. 이걸 보면 생각나는 것은 StoryQ서비스죠 ^^ 실버라이트로 매우 쉽게 구현할 수 있다는 게 신기했습니다.

오늘 보고 배운 것은 실버라이트의 쉬운 구현과 협업, 좋은 데모 등의 많은 것을 배웠네요. MS제품의 장점의 쉽고 빠른 생산성을 볼 수 있었는데요. 아직 제가 다뤄보지 않아서 정확히는 모르겠습니다만, 조만간 삽질을 해볼 것 같습니다 ^^

PS. 오늘 경품추첨에서 당첨 번호가 137이랑 139가 나왔는데........
난.....138일 뿐이고, 어떤 분이랑 엘리베이터 둘이 탔는데 그 분이 먼저갔을 뿐이고!
 
Posted by 머드초보
,
 
이거 왜그런지 모르겠는데요.
지웠다가 다시 깔아도 안되고, 그래서 지식인에게 물어보니, NateOn설치폴더에 addin이라는 폴더를 날려버리면 된다고 했는데요.

비스타용은 저기에 addin폴더가 생성되지 않습니다.
그래서 찾아본 결과 역시 AppData폴더에 저장이 되는군요.

C:\Users\mudchobo\AppData\Local\SK Communications\NATEON

저 같은 경우 위와 같은 경로에 Addin폴더가 저장이 되어있습니다.
저거 날려주시거나, plugin_list37.xml만 날리셔도 된다고 하더라구요.
전 폴더를 통채로 날렸습니다-_-;

그리고, 나서 네이트온 원격을 시도하면 될 겁니다.


 
Posted by 머드초보
,