<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>khomkrit &#187; tutorial</title>
	<atom:link href="http://khomkrit.wordpress.com/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://khomkrit.wordpress.com</link>
	<description>Everything, I want to write to Everyone who want to read.</description>
	<lastBuildDate>Sun, 14 Jun 2009 16:14:23 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>th</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='khomkrit.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/2d7bd383b16b9bf673f8138645f58dcd?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>khomkrit &#187; tutorial</title>
		<link>http://khomkrit.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://khomkrit.wordpress.com/osd.xml" title="khomkrit" />
		<item>
		<title>Using Jasper Report with Grails ตอนที่ 2</title>
		<link>http://khomkrit.wordpress.com/2008/10/10/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-2/</link>
		<comments>http://khomkrit.wordpress.com/2008/10/10/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-2/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 09:51:12 +0000</pubDate>
		<dc:creator>khomkrit</dc:creator>
				<category><![CDATA[grails]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[jasper]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://khomkrit.wordpress.com/?p=347</guid>
		<description><![CDATA[บันทึกนี้ถูกย้ายไปที่ Using Jasper Report with Grails ตอนที่ 2
http://khomkrit.blogspot.com/2009/01/using-jasper-report-with-grails-2.html
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=347&subd=khomkrit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>บันทึกนี้ถูกย้ายไปที่ <a href="http://khomkrit.blogspot.com/2009/01/using-jasper-report-with-grails-2.html">Using Jasper Report with Grails ตอนที่ 2</a></p>
<p>http://khomkrit.blogspot.com/2009/01/using-jasper-report-with-grails-2.html</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/khomkrit.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/khomkrit.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/khomkrit.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/khomkrit.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/khomkrit.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/khomkrit.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/khomkrit.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/khomkrit.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/khomkrit.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/khomkrit.wordpress.com/347/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=347&subd=khomkrit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://khomkrit.wordpress.com/2008/10/10/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">khomkrit</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Jasper Report with Grails ตอนที่ 1</title>
		<link>http://khomkrit.wordpress.com/2008/10/09/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-1/</link>
		<comments>http://khomkrit.wordpress.com/2008/10/09/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-1/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 05:18:17 +0000</pubDate>
		<dc:creator>khomkrit</dc:creator>
				<category><![CDATA[tutorial]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasper]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://khomkrit.wordpress.com/?p=327</guid>
		<description><![CDATA[บทความนี้ถูกย้ายไปที่ Using Jasper Report with Grails ตอนที่ 1
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=327&subd=khomkrit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>บทความนี้ถูกย้ายไปที่ <a href="http://khomkrit.blogspot.com/2009/01/using-jasper-report-with-grails-1.html">Using Jasper Report with Grails ตอนที่ 1</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/khomkrit.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/khomkrit.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/khomkrit.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/khomkrit.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/khomkrit.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/khomkrit.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/khomkrit.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/khomkrit.wordpress.com/327/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/khomkrit.wordpress.com/327/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/khomkrit.wordpress.com/327/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=327&subd=khomkrit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://khomkrit.wordpress.com/2008/10/09/using-jasper-report-with-grails-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">khomkrit</media:title>
		</media:content>
	</item>
		<item>
		<title>การสร้าง chart ใน Grails</title>
		<link>http://khomkrit.wordpress.com/2008/02/11/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-chart-%e0%b9%83%e0%b8%99-grails/</link>
		<comments>http://khomkrit.wordpress.com/2008/02/11/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-chart-%e0%b9%83%e0%b8%99-grails/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 11:39:23 +0000</pubDate>
		<dc:creator>khomkrit</dc:creator>
				<category><![CDATA[grails]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://khomkrit.wordpress.com/?p=91</guid>
		<description><![CDATA[ณ ตอนนี้ใน Grails นั้นมี plugin ในการสร้าง chart อยู่สองตัวก็คือ

Google Chart Plugin
JFreeChart Eastwood Plugin

โดยในตัวแรกนั้น (Google Chart Plugin) จะช่วยอำนวยความสะดวกในการใช้งาน Google Chart API
โดยจากปกตินั้น จะส่ง URL ไปที่ Google Chart พร้อมด้วย property ต่างๆที่เหมาะสมตามความต้องการ แต่สำหรับบางคนการทำลักษณะนี้อาจจะไม่สะดวก และค่อนข้างยุ่งยาก เพราะว่าเราต้องใส่ property ต่างๆของ chart ที่เราต้องการลงไปใน URL ซึ่งชื่อของ property ต่างๆก็ลำบากต่อการจำ เพราะว่ามันไม่ได้เขียนเต็มๆนี่สิ มันดันย่อมาซะงั้น เช่น chl, cht หรือ chd อะไรทำนองนี้ อีกทั้งเราต้องมาเขียนลักษณะของ url ให้ถูกต้องอีก คือแต่ละ property หลักบางครั้งอาจต้องคั่นด้วยเครื่องหมาย &#38; และ property [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=91&subd=khomkrit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>ณ ตอนนี้ใน Grails นั้นมี plugin ในการสร้าง chart อยู่สองตัวก็คือ</p>
<ul>
<li><a href="http://grails.org/Google+Chart+Plugin">Google Chart Plugin</a></li>
<li><a href="http://grails.org/JFreeChart+Eastwood+Plugin">JFreeChart Eastwood Plugin</a></li>
</ul>
<p>โดยในตัวแรกนั้น (Google Chart Plugin) จะช่วยอำนวยความสะดวกในการใช้งาน Google Chart API</p>
<p>โดยจากปกตินั้น จะส่ง URL ไปที่ Google Chart พร้อมด้วย property ต่างๆที่เหมาะสมตามความต้องการ แต่สำหรับบางคนการทำลักษณะนี้อาจจะไม่สะดวก และค่อนข้างยุ่งยาก เพราะว่าเราต้องใส่ property ต่างๆของ chart ที่เราต้องการลงไปใน URL ซึ่งชื่อของ property ต่างๆก็ลำบากต่อการจำ เพราะว่ามันไม่ได้เขียนเต็มๆนี่สิ มันดันย่อมาซะงั้น เช่น chl, cht หรือ chd อะไรทำนองนี้ อีกทั้งเราต้องมาเขียนลักษณะของ url ให้ถูกต้องอีก คือแต่ละ property หลักบางครั้งอาจต้องคั่นด้วยเครื่องหมาย &amp; และ property ย่อยๆก็ยังต้องคั่นด้วยเครื่องหมาย | (pipe) หรือ , (comma) อีก</p>
<p>แต่ว่า Google Chart Plugin ตัวนี้ ทำให้เราใช้ Google Chart API ผ่าน g Tag ของ Grails ได้เลย เช่น</p>
<p><span style="color:#008000;">&lt;g:pieChart title=&#8217;Sample Pie Chart&#8217; colors=<span class="code-quote">&#8220;${colors}​&#8221;</span><br />
labels=<span class="code-quote">&#8220;${labels}​&#8221;</span> fill=<span class="code-quote">&#8220;${&#8216;bg,s,efefef&#8217;}​&#8221;</span> dataType=&#8217;text&#8217; data=&#8217;${values3}&#8217; /&gt;</span></p>
<p>เอา tag นี้ไปแปะในไฟล์ .gsp ได้เลย&#8230;</p>
<p>จาก code ตัวอย่าง เราจะเห็นได้ว่า เราสามารถกำหนดค่าต่างๆลงใน property ของ Tag ได้เลยตรงๆ และชื่อ property ก็ง่ายต่อการจำ ไม่ได้เป็นคำย่อเหมือนกับการส่ง URL ไปโดยตรง code ดูชัดเจนมากขึ้น</p>
<p>ไม่ว่าจะยังไงซะ ผมก็ไม่ชอบอยู่ดี ให้ผมส่ง URL ไปที่ Google ตรงๆยังจะสะดวกว่าอีก คงเป็นเพราะผมชินกับการใช้ Gogole Chart API ไปแล้วล่ะ</p>
<p>อย่างไรก็ตาม ไม่ว่าจะใช้ Google Chart Plugin หรือส่ง URL ไปตรงๆเลย ก็ยังมีข้อเสียตรงที่ว่า ถ้าเราไม่ได้เชื่อมต่อ Internet แล้ว เราก็ไม่สามารถสร้าง Chart ได้</p>
<p>เอาล่ะ&#8230;เข้ามาถึงเรื่องที่จะเขียนจริงๆครั้งนี้ได้ซะที</p>
<p>Plugin ตัวที่สองที่จะพูดถึงก็คือ JFreeChart Eastwood Plugin ตัวนี้เกิดมาเพื่อแก้ปัญหาตอนที่เราไม่ได้เชื่อมต่อ Internet นี่แหละ เพราะมันจะทำตัวในลักษณะ Emulate Google Chart API  ซึ่งทำให้จากเดิมเราจะส่ง URL ไปง้อให้ Google เค้าช่วยสร้าง Chart ให้ แต่เมื่อใช้ Plugin ตัวนี้ก็ไม่จำเป็นอีกต่อไป ตรงกันข้าม เราสามารถส่ง URL ลักษณะเดียวกับที่เราส่งไปให้ Google Chart มาที่เครื่องเราเองได้เลย</p>
<p>ตัวอย่างเช่นจากเดิมส่ง Request ไปง้อ Google โดย</p>
<p><span style="color:#008000;">http://chart.apis.google.com/chart?cht=p3&amp;chd=s:hW&amp;chs=250&#215;100&amp;chl=Hello|World</span></p>
<p>หลังจากที่เราไม่ง้อ Google แล้ว ก็ส่งแบบนี้ได้เลย</p>
<p><span style="color:#008000;">http://localhost:8080/ชื่อโปรเจคเรา/chart?cht=p3&amp;chd=s:hW&amp;chs=250&#215;100&amp;chl=Hello|World</span></p>
<p>หรือถ้าลงเป็น plugin ของ Grails Project ของเราเอง แล้วเราต้องการเอา Chart มาแปะที่หน้าเวปของเรา เพื่อความยืดหยุ่นก็จะเขียนได้ว่า</p>
<p><span style="color:#008000;">${request.contextPath}/chart?cht=p3&amp;chd=s:hW&amp;chs=250&#215;100&amp;chl=Hello|World</span><br />
มันจะได้ค่ามาลักษณะเดียวกับ Google คือเป็นภาพ Chart ตาม parameter ที่เราส่งไป</p>
<p>ส่วนการติดตั้ง Plugin ตัวนี้ไม่ยากสามารถทำได้ 2 ทางคือ</p>
<p>ที่ CLI พิมพ์</p>
<p><span style="color:#008000;">$&gt;grails install-plugin eastwood-chart </span></p>
<p>หรือถ้ามี plugin ตัวนี้อยู่แล้ว ก็แค่ copy ไปวางไว้ใน folder ชื่อ plugins(ถ้าไม่มีให้สร้างขึ้นมาใหม่เอง) ที่อยู่ที่ root ของ Grails Project ของเรา</p>
<p>จากนั้นทดสอบการทำงานโดย  Browse ไปที่</p>
<p><span style="color:#008000;">http:<span class="code-comment">//localhost:8080/โปรเจคของเรา/plugins/eastwood-chart-เวอร์ชั่นของeastwoodchart/test.gsp</span></span></p>
<p>plugin ตัวที่สองนี้ ทำให้คนที่เคยใช้ Google Chart API อยู่แล้วไม่จำเป็นต้องศึกษาวิธีการใช้งานใหม่ สามารถใช้งานได้แบบเดิมๆ หรือสามารถศึกษาวิธีการใช้งาน Google Chart API ได้ <a href="http://code.google.com/apis/chart/">ที่นี่ </a></p>
<p>จากเดิมก่อนหน้านี้ ผมเคยพยายามใช้ JFreeChart API สำหรับ Java Application แล้ว แต่ Resource มันน้อยเหลือเกิน และทีสำคัญกว่าจะได้ Chart มาแต่ละอันเขียน Code มือหงิกเลย แต่หลังจากที่ได้มาพบกับ EastWood Chart Plugin ตัวนี้แล้ว รู้สึกสบายใจ ไม่ต้องเสี่ยงอาการมือหงิกอีกต่อไป เขียน Code น้อยลงเยอะเลย Resource และวิธีใช้ก็อ่านได้จาก <a href="http://code.google.com/apis/chart/">Google Chart API </a>ได้ตรงๆเลย</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/khomkrit.wordpress.com/91/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/khomkrit.wordpress.com/91/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/khomkrit.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/khomkrit.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/khomkrit.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/khomkrit.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/khomkrit.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/khomkrit.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/khomkrit.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/khomkrit.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/khomkrit.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/khomkrit.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=91&subd=khomkrit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://khomkrit.wordpress.com/2008/02/11/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-chart-%e0%b9%83%e0%b8%99-grails/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">khomkrit</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate with NetBeans(Final)</title>
		<link>http://khomkrit.wordpress.com/2007/09/11/hibernate-with-netbeansfinal/</link>
		<comments>http://khomkrit.wordpress.com/2007/09/11/hibernate-with-netbeansfinal/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 05:31:10 +0000</pubDate>
		<dc:creator>khomkrit</dc:creator>
				<category><![CDATA[tutorial]]></category>
		<category><![CDATA[hibernate]]></category>

		<guid isPermaLink="false">http://khomkrit.wordpress.com/2007/09/11/hibernate-with-netbeansfinal/</guid>
		<description><![CDATA[จากที่ได้เขียน Hibernate with NetBeans มาแล้ว ก็มีคนบอกว่าให้เขียนวิธีใช้ด้วยสิ คราวนี้จึงมาเขียนวิธีใช้
จากตัวอย่างที่ยกมาจากครั้งที่ผ่านๆมา สามารถนำ Class ต่างๆที่เรามาใช้งานได้ดังนี้
การเพิ่ม record ใหม่
User user = new User();
user.setName("myName");
user.setAge(20);
user.setWeight(30);
new UserFacade().saveUser(user);
ส่วนการ Query นั้นก็ไม่ยาก ทำได้โดย
List users = new UserFacade().findByAge(20);
จากข้างบนคือการ Query โดยค้นหาจาก Age
เห็นได้ว่าการค้นคืน หรือการเพิ่ม Record ใหม่ ทำได้ไม่ยากอย่างที่คิดไว้เลยถ้าหากว่าเราใช้ Hibernate ทำ ORM แล้ว
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=54&subd=khomkrit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>จากที่ได้เขียน Hibernate with NetBeans มาแล้ว ก็มีคนบอกว่าให้เขียนวิธีใช้ด้วยสิ คราวนี้จึงมาเขียนวิธีใช้</p>
<p>จากตัวอย่างที่ยกมาจากครั้งที่ผ่านๆมา สามารถนำ Class ต่างๆที่เรามาใช้งานได้ดังนี้</p>
<p>การเพิ่ม record ใหม่</p>
<p><code>User user = new User();<br />
user.setName("myName");<br />
user.setAge(20);<br />
user.setWeight(30);</code></p>
<p><code>new UserFacade().saveUser(user);</code></p>
<p>ส่วนการ Query นั้นก็ไม่ยาก ทำได้โดย</p>
<p><code>List users = new UserFacade().findByAge(20);</code></p>
<p>จากข้างบนคือการ Query โดยค้นหาจาก Age</p>
<p>เห็นได้ว่าการค้นคืน หรือการเพิ่ม Record ใหม่ ทำได้ไม่ยากอย่างที่คิดไว้เลยถ้าหากว่าเราใช้ Hibernate ทำ ORM แล้ว</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/khomkrit.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/khomkrit.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/khomkrit.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/khomkrit.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/khomkrit.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/khomkrit.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/khomkrit.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/khomkrit.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/khomkrit.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/khomkrit.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/khomkrit.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/khomkrit.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=54&subd=khomkrit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://khomkrit.wordpress.com/2007/09/11/hibernate-with-netbeansfinal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">khomkrit</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate with NetBeans(3)</title>
		<link>http://khomkrit.wordpress.com/2007/08/22/hibernate-with-netbeans3/</link>
		<comments>http://khomkrit.wordpress.com/2007/08/22/hibernate-with-netbeans3/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 08:59:03 +0000</pubDate>
		<dc:creator>khomkrit</dc:creator>
				<category><![CDATA[tutorial]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://khomkrit.wordpress.com/2007/08/22/hibernate-with-netbeans3/</guid>
		<description><![CDATA[หลังจากเราได้ไฟล์ชื่อ User.java มาแล้ว เราจะเห็นว่า ข้างในไฟล์ที่ NetBeans generate มาให้นั้นจะมี attribute มาให้ 1 ตัวก่อนคือ id มี type เป็น String ดังรูปเลย


จากนั้นเรามาสร้าง attribute เพิ่มให้ class User ซึ่งก็คือการเพิ่ม Field ในตารางชื่อ User นั่นเอง ซึ่งสามารถทำได้โดยการนำ mouse สุดที่รักไป click เบาๆที่ที่เอาไว้เขียน code ในไฟล์ User.java หรือจะให้แนะนำก็ตรงบรรทัดใต้คำว่า PrimaryKey: String id ก็แล้วกัน จากนั้นก็กดปุ่มอะไรก็แล้วแต่ให้ auto complete box เด้งขึ้นมา เช่น Ctrl+SpaceBar หรือสำหรับผมแล้วใช้วิธี . (จุด) ครับ จากนั้น auto complete box [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=50&subd=khomkrit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>หลังจากเราได้ไฟล์ชื่อ User.java มาแล้ว เราจะเห็นว่า ข้างในไฟล์ที่ NetBeans generate มาให้นั้นจะมี attribute มาให้ 1 ตัวก่อนคือ id มี type เป็น String ดังรูปเลย<br />
<span id="more-50"></span><br />
<a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/900370999/"><img src="http://farm2.static.flickr.com/1100/900370999_5f1e7c8a29.jpg" alt="Picture24" width="342" height="226" /></a></p>
<p>จากนั้นเรามาสร้าง attribute เพิ่มให้ class User ซึ่งก็คือการเพิ่ม Field ในตารางชื่อ User นั่นเอง ซึ่งสามารถทำได้โดยการนำ mouse สุดที่รักไป click เบาๆที่ที่เอาไว้เขียน code ในไฟล์ User.java หรือจะให้แนะนำก็ตรงบรรทัดใต้คำว่า PrimaryKey: String id ก็แล้วกัน จากนั้นก็กดปุ่มอะไรก็แล้วแต่ให้ auto complete box เด้งขึ้นมา เช่น Ctrl+SpaceBar หรือสำหรับผมแล้วใช้วิธี . (จุด) ครับ จากนั้น auto complete box ก็จะเด้งขึ้นมาครับ (หมายเหตุ: ในขั้นตอนนี้ถ้า auto compete box เด้งขึ้นมาจ๊ะเอ๋ อาจจะทำให้ตกใจเล็กน้อยถึงปานกลางนะครับ ทำใจดีๆครับ ไม่ต้องตกใจ)  ดังรูปนี้เลยครับ</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/900370969/"><img src="http://farm2.static.flickr.com/1057/900370969_6134db675f.jpg" alt="Picture22" width="308" height="293" /></a></p>
<p>ดังรูปให้เลือกที่ Hibernate Property เลยครับ จากนั้นจะมี Dialog Box เล็กๆขึ้นมาดังรูปครับ</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/900370981/"><img src="http://farm2.static.flickr.com/1184/900370981_00de10da8d.jpg" alt="Picture23" width="400" height="274" /></a></p>
<p>จากนั้นกรอกตามรูปเลยครับ ซึ่ง Field บนสุด (Name) คือชื่อของ Field ที่เราจะสร้าง ส่วน Field ถัดมา (Class Name) คือชนิดของข้อมูลของ Field ที่เรากำลังจะสร้างขึ้น จากนั้นกด OK แล้วถ้าหากว่าอยากจะสร้าง Field อื่นๆอีก ก็ทำเช่นนี้ไปเรื่อยๆจนกว่าจะพอใจ</p>
<p>ซึ่ง Field นี้จะเป็น Attribute ของคลาส User และเป็นชื่อของ Field ในตารางชื่อ User ที่เรากำลังจะสร้างขึ้นนั่นเอง</p>
<p>เมื่อเราเพิ่มชื่อ Field แล้วในแต่ละครั้งจะมี Field เพิ่มขึ้นมา และเมื่อเราเพิ่ม Field จนพอใจแล้วจะได้ประมาณว่าดังรูปข้างล่างนี้เลยครับ</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1200871965/"><img src="http://farm2.static.flickr.com/1280/1200871965_49924db070.jpg" alt="Picture27" width="275" height="369" /></a></p>
<p>จากนั้นเราจะทำการสร้างไฟล์ HibernateUtil ขึ้นมาใช้ (จริงๆในขั้นนี้เราไม่ได้เอามาใช้โดยตรง) ซึ่งสามารถทำได้โดยการไป click ขาวเบาๆที่ชื่อโปรเจค แล้วเลือก Net&gt;File/Folder&#8230; ดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201796588/"><img src="http://farm2.static.flickr.com/1121/1201796588_65d423d389.jpg" alt="Picture28" width="500" height="284" /></a></p>
<p>จากนั้นเลือกที่ Category เป็น Hibernate และ File Types เป็น HibernateUtil.java ดังรูปเลย</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201797064/"><img src="http://farm2.static.flickr.com/1167/1201797064_40b21bc591.jpg" alt="Picture29" width="500" height="345" /></a></p>
<p>จากนั้นกรอกไปดังรูป ชื่อ Class ที่เราจะสร้าง ชื่อโปรเจคที่จะให้ไฟล์นี้อยู่ และสุดท้าย ชื่อ Package ที่จะให้ไฟล์นี้อยู่ จากตัวอย่างให้ไฟล์นี้ไปยู่ที่ Package ชื่อว่า bean ดังรูปเลย</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201797354/"><img src="http://farm2.static.flickr.com/1213/1201797354_683b1391dd.jpg" alt="Picture30" width="500" height="345" /></a></p>
<p>จากนั้นเราจะเห็นไฟล์ที่เราสร้างอยูในตำแน่งที่เรากำหนดดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201797618/"><img src="http://farm2.static.flickr.com/1365/1201797618_5b4140aa44.jpg" alt="Picture32" width="251" height="327" /></a></p>
<p>จากนั้นในขั้นตอนนี้เราจะสร้าง Facade (ซึ่งเป็น 1 ในอีกหลายๆ Design Pattern) ขึ้นมาเอาไว้สำหรับ control หรือเรียกใช้ คลาส User นั่นเอง ส่วนที่ว่าทำไมต้อง Facade และ Facade ใช้ทำอะไรนั้น นอกเหนือจากบทความนี้นะครับ ลองหาอ่านดูเอง &#8230; ไปที่ไฟล์ User.java แล้วเอา Mouse คลิ๊กที่ว่างๆซักที่ แล้วทำยังไงก็แล้วแต่ให้มี auto complete box เด้งขึ้นมา (ขึ้นมารอบสองแล้วคงไม่ตกใจแล้วนะ) จากนั้นเลือกที่ Hibernate Facade ดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201797950/"><img src="http://farm2.static.flickr.com/1438/1201797950_0bb9e8c389.jpg" alt="Picture37" width="292" height="292" /></a></p>
<p>จากนั้นเราก็ไม่ต้องกำหนดอะไรอีกแล้ว ชำเลืองตาไปทางซ้ายนิดๆ (ถ้าจอกว้างๆก็หันหน้าไปหน่อยๆ) ก็จะเห็นว่ามีไฟล์ชื่อ UserFacade.java ขึ้นมาดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1200932887/"><img src="http://farm2.static.flickr.com/1217/1200932887_f775b27c61.jpg" alt="Picture38" width="251" height="327" /></a></p>
<p>จากนั้นเข้าไปที่ไฟล์ UserFacade.java เราจะเห็นหน้าตามันเป็นแบบนี้</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1200933171/"><img src="http://farm2.static.flickr.com/1415/1200933171_8c1c2bb67c.jpg" alt="Picture39" width="500" height="238" /></a></p>
<p>เราจะเห็นได้ว่า Class UserFacade ที่ NetBeans สร้างมาให้นั้นจะมีเพียง Method เดียวในขั้นตอนต่อไปเราจะสร้าง Method ให้มากกว่านี้เพื่อจะได้ให้ Object ที่สร้างมาจาก Class UserFacade ทำอะไรได้มากกว่าที่มันกำหนดมาให้ตอนแรก โดยการ Click ในไฟล์นี้ แล้วก็ทำให้ auto complete box เด้งขึ้นมาแล้วเลือกที่ HQL Generator ดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1200933455/"><img src="http://farm2.static.flickr.com/1130/1200933455_0d952149a0.jpg" alt="Picture40" width="291" height="292" /></a></p>
<p>เมื่อเลือกที่ HQL Generator แล้วจะปรากฏหน้าต่างขึ้นมาดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201984882/"><img src="http://farm2.static.flickr.com/1122/1201984882_de2a4c7bb1.jpg" alt="Picture 42" width="500" height="320" /></a></p>
<p>panel ทางด้านซ้ายจะบอกว่าในคลาส User มี Attribute ชื่ออะไรบ้าง (แต่ละ Attribute จะกลายไปเป็น Field ของ ตารางชื่อ User ในอนาตค)<br />
จากนั้นกดปุ่ม Add ทางด้านล่างเพื่อที่จะสร้าง HQL Syntax ขึ้นมาใช้ หรือพูดง่ายๆก็คือหน้าต่างหน้าเป็นหน้าต่างสำหรับช่วยให้เราสร้าง HQL Syntax ขึ้นมาช้นั่นเอง ซึ่งจริงๆแล้วจะเขียนเองก็ได้ โดยใจตัวอย่างนี้ให้เลือกที่ node Age ก่อนจากนั้นจึงค่อยกดปุ่ม Add โปรแกรมจะสร้าง รายการขึ้นมาใหม่ทางด้านขวามือของ panel ทางด้านซ้าย ดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201985170/"><img src="http://farm2.static.flickr.com/1003/1201985170_cd253c3591.jpg" alt="Picture 48" width="500" height="292" /></a></p>
<p>จากนั้นกำหนดค่าต่างๆดังรูป โดย Method Name คือชื่อของ Method ที่เราจะสร้างให้ทำงานตาม HQL Syntax ที่เรากำลังจะสร้าง ในที่นี้จะสร้าง method ที่ทำหน้าที่ค้นคืน user โดยค้นคืนโดยอ้างจากอายุ(Age) จึงตั้งชื่อ method ว่า findByAge</p>
<p>หลังจากที่เรากำหนดค่าต่างๆ และเมื่อกดปุ่ม OK แล้ว NetBeans จะสร้าง Code ขึ้นมาให้เราดังรูป</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201985464/"><img src="http://farm2.static.flickr.com/1348/1201985464_5af6d5c506.jpg" alt="Picture 49" width="491" height="179" /></a></p>
<p>จะเห็นได้ว่าเป็นการสร้าง method ชื่อ findByAge ตามที่เราได้กำหนดไว้และมี return Type เป็น Object ของคลาส java.util.List</p>
<p>เมื่อสร้างเสร็จแล้วต่อไปเราจะให้ NetBeans สร้างตารางชื่อ User และมี Field ต่างๆตามที่เรากำหนดไว้ในไฟล์ชื่อ User.java ซึ่งสามารถทำได้โดย ขั้นแรกให้ คลิ๊กขวาที่โปรเจค แล้วเลือก Build ก่อน นั่งรอซักพัก หรือถ้าเครื่องแรมน้อยๆ อืดๆก็ให้นอนรอได้เลย รับรองว่าไม่ทันได้นอนก็ Build เสร็จแล้ว (แล้วจะให้นอนทำไมล่ะนั่น)</p>
<p>จากนั้นให้ click ขวาที่นี่ตามรูปเลย แล้วเลือก Create DB Table</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/80199539@N00/1201121799/"><img src="http://farm2.static.flickr.com/1378/1201121799_c52545f044.jpg" alt="Picture 53" width="282" height="191" /></a></p>
<p>พอถึงขั้นตอนนี้ก็เสร็จแล้ว การกำหนด และสร้างอะไรต่างๆนาๆ ต่อไปเราจะเอาไปใช้ละนะครับ</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/khomkrit.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/khomkrit.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/khomkrit.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/khomkrit.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/khomkrit.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/khomkrit.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/khomkrit.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/khomkrit.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/khomkrit.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/khomkrit.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/khomkrit.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/khomkrit.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=khomkrit.wordpress.com&blog=675037&post=50&subd=khomkrit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://khomkrit.wordpress.com/2007/08/22/hibernate-with-netbeans3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">khomkrit</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1100/900370999_5f1e7c8a29.jpg" medium="image">
			<media:title type="html">Picture24</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1057/900370969_6134db675f.jpg" medium="image">
			<media:title type="html">Picture22</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1184/900370981_00de10da8d.jpg" medium="image">
			<media:title type="html">Picture23</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1280/1200871965_49924db070.jpg" medium="image">
			<media:title type="html">Picture27</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1121/1201796588_65d423d389.jpg" medium="image">
			<media:title type="html">Picture28</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1167/1201797064_40b21bc591.jpg" medium="image">
			<media:title type="html">Picture29</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1213/1201797354_683b1391dd.jpg" medium="image">
			<media:title type="html">Picture30</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1365/1201797618_5b4140aa44.jpg" medium="image">
			<media:title type="html">Picture32</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1438/1201797950_0bb9e8c389.jpg" medium="image">
			<media:title type="html">Picture37</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1217/1200932887_f775b27c61.jpg" medium="image">
			<media:title type="html">Picture38</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1415/1200933171_8c1c2bb67c.jpg" medium="image">
			<media:title type="html">Picture39</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1130/1200933455_0d952149a0.jpg" medium="image">
			<media:title type="html">Picture40</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1122/1201984882_de2a4c7bb1.jpg" medium="image">
			<media:title type="html">Picture 42</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1003/1201985170_cd253c3591.jpg" medium="image">
			<media:title type="html">Picture 48</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1348/1201985464_5af6d5c506.jpg" medium="image">
			<media:title type="html">Picture 49</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1378/1201121799_c52545f044.jpg" medium="image">
			<media:title type="html">Picture 53</media:title>
		</media:content>
	</item>
	</channel>
</rss>