그냥 넷빈즈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이 자동으로 선택이 되는데, 거기에 방금 생성한 테이블이 있을 겁니다.
이제 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
댓글을 달아 주세요