Wednesday, April 29, 2009

Database Lesson 5 - Database + Java integration using iBatis (part 2)

Haha, may nakalimutan ulit ako. Kelangan nga pala natin idownload yung iBatis na class. Anyway, madali lang naman yun, idagdag ko na lang dito:

1. Go here, and download the iBatis files by clicking on 'Download iBATIS Java 2.3.4'
2. Extract kahit san. :)

Now, mag-gagawa uli tayo ng isa pang SQL file:

1. Right click sa 'com.pinoyjavatutorial.dao.sql' na package
2. choose 'New' -> 'Other' -> 'XML' -> 'XML' -> 'Next'
3. Sa 'Filename:', type in 'sqlMapConfig.xml' and click 'Finish'
5. Meron dun sa bandang baba (just on top nung mga tabs na 'Problems', 'Javadoc', 'Declaration' etc.)na dalawang tabs: 'Design' at 'Source'. Paki click nyo yung source.
6. To yung makikita nyo na code:

<?xml version="1.0" encoding="UTF-8" ?>

7. Now, idagdag nyo to:

<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd"
>

<sqlMapConfig>

<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:derby://localhost:1527/sampleDB"/>
<property name="JDBC.Username" value="ako"/>
<property name="JDBC.Password" value="wala"/>
</dataSource>
</transactionManager>

<sqlMap resource="com/pinoyjavatutorial/dao/sql/BrandTable.xml" />

</sqlMapConfig>

8. Sa 'Package Explorer' na tab, right click -> New -> Folder
9. Type in 'lib' sa 'Folder name: ' the field and click 'Finish'
10. Punta kayo kung san nyo inextract ang Apache derby. Sa loob ng folder na 'lib', click on 'derbyclient.jar', copy (ctrl + c) then balik sa window ng eclipse. Sa click nyo yung newly created na 'lib' na folder, press 'ctrl+v' or kaya right click -> paste. Same procedure para sa iBatis na class, punta kayo kung san inextract ang iBatis. Sa loob nung lib folder under kung san inextract ang iBatis, copy 'ibatis-2.3.4.726.jar' and paste it din sa 'lib' na folder ng eclipse.
11. Sa 'Package Explorer' uli, right click -> 'Properties' -> sa left side nung lumabas na window -> 'Java Build Path'. Then sa right side, yung sa 'Libraries' na tab, click 'Add Jars...'. Expand mo lang yung folder ng project natin until makarating ka sa 'lib' na folder. Press and hold 'shift' or 'ctrl' key, then click nyo yung 'derbyclient.jar' and 'ibatis-2.3.4.726.jar' and press 'Ok' button ng 'Jar Selection' at 'Properties for SampleDatabaseProject' na dialog boxes.
12. Now, the fun part, let's create the main class. Sa 'Package Explorer' ulit, right click on 'SampleDatabaseProject' -> New -> Class.
13. Sa 'Package: ' na field, type in 'com.pinoyjavatutorial.core' and sa 'Name: ' field, type in, 'MainClass'.
14. Click 'Finish'
15. Type in the following:

package com.pinoyjavatutorial.core;

import java.sql.SQLException;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.pinoyjavatutorial.dao.BrandTableJavaObject;

public class MainClass {

public static void main(String[] args) {
SqlMapClient sqlMap = DBConn.getSqlMapInstance();
BrandTableJavaObject brandTable = null;

int id = 10;
try {
brandTable = (BrandTableJavaObject) sqlMap.queryForObject ("selectByID", id);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Phone details with ID = 10:");
System.out.println("Brand: " + brandTable.getBrand());
System.out.println("Model: " + brandTable.getModel());
}

}


16. Sa 'Package Explorer' ulit, right click on 'SampleDatabaseProject' -> New -> Class.
17. Sa 'Package: ' na field, type in 'com.pinoyjavatutorial.core', sa 'Name: ' field, type in, 'DBConn' and click 'Finish'
18. Type in the following:

package com.pinoyjavatutorial.core;

import java.io.IOException;
import java.io.Reader;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class DBConn{
private static final SqlMapClient sqlMap;

static {
try {
String resource = "com/pinoyjavatutorial/dao/sql/sqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException ("Error initializing DBConn class. Cause: " + e);
}
}
public static SqlMapClient getSqlMapInstance () {
return sqlMap;
}
}


Now, its time to run our program. Dapat yung 'MainClass.java' ang nasa harap na tab sa eclipse, sa menu bar, go to Run (nasa pagitan ito ng 'Project' at 'Window' - > Run As -> Java Application. Kung may lumabas na error at ang pinasimula nung lahat ng error ay ito:

java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused.

It means, patay yung database server natin na pina gawa ko sa inyo sa Lesson 3 steps 1-2. Anyway, para i-up yung server:

1. Run command prompt (cmd)
2. Type in the following:

cd %DERBY_HOME%
cd lib
java -jar derbyrun.jar server start


Now, ok na dapat yan. Alam nyo na for sure ang lalabas sa console ;)

Yung mga old school programmers na baka magtaka kasi ibang way to ng pag-access ng database. Yes, iba nga to. Sa industry kasi ito na ngayon ang uso, ang pag gamit ng persistence framework. Sa ibang time ko na yan explain kung ano ba yung persistence framework. Basically kaya naging iba kasi gumamit tayo ng iBatis (which is a persistence framework) instead na diretso sa codes ang integration ng Database and Java. Pero sa totoo lang, madami itong benefits. Lalo na if your working sa industry kasi madaling magbago ng query (nakalagay lang sa mga xml files), pag may changes sa database sa xml file ka lang pupunta para baguhin at di na hahanapin pa sa codes, kung team kayo kung gumawa, pwede na magconcentrate yung isang team sa mismong logic ng program at yung isang team sa configuration ng database. Kesa yung magkasama yung mga codes at query. Pag natapos na sa pag gawa, madaling mag integrate. At marami pang ibang benefits. Siguro kaya ito nauuso sa industry ngayon kasi nga mas madali sya. Mahirap lang sa start kasi my mga xml files pa pero once you get pass that or my partner ka, oks na. :)

Anyway, sa mga next lessons natin I'll teach you how to do delete and update kasi ngayon select lang ginamit natin. Then gagamit na tayo ng mga shortcut tools. If you noticed, we didn't use yung Apache Derby Eclipse plugin natin that I told you to download. Gagagamit din tayo ng iBator para maging madali at mabilis ang pag gawa ng mga xml files. As in we just need to run the tool at sya na bahala.

See you all sa next lesson natin which will be some time next Sunday. :)

8 comments:

  1. sir may problem po ako sa #11.
    sa part na 'to
    'Package Explorer' -> right click -> 'Java Build Path' -> 'Libraries' ->'Add Jars' hindi ko po mahanap yung

    'Java Build Path' -> 'Libraries' ->'Add Jars'

    'Build Path' lang po nakalagay 'pag right click ko tapos walang Libraries, 'Add Libraries...' lang nakalagay at sa loob nun walang 'Add Jars'.

    ReplyDelete
  2. Thanks pinoy_radical for pointing that out. :) sige edit ko ngayon yung tutorial. :)

    ReplyDelete
  3. ah ayun! sa 'Properties' pala siya. hindi kasi ako nag-e-explore-explore eh! :) ngayon alam ko na dapat explore explore tayo hehe. salamat sir

    ReplyDelete
  4. hehe :) thanks din po for letting me know na may di kayo nasundan para matama ko yung tutorial ko. :) pag oks na po kayo dito, let me know lang para dugtungan ko na tong Database tutorial. :)

    thanks!

    ReplyDelete
  5. hi sir, first of all thanks for this very helpful tutorials. i am trying out the ibatis tutorial at the moment. i think i have gotten everything right, but when i run it i get this error: java.sql.SQLNonTransientConnectionException: The connection was refused because the database sample was not found. i have tried restarting the db but still doesnt work. can you please help me on this. thanks!!

    ReplyDelete
  6. Thanks!! Glad to hear you like my tutorials. :)

    regarding your problem, baka you're db server is not running. try this:

    1. Run command prompt (cmd)
    2. Type in the following:

    cd %DERBY_HOME%
    cd lib
    java -jar derbyrun.jar server start

    then saka mo execute yung program. :)

    ReplyDelete
  7. ok na po, i got it running now. thanks again sir! hope to see more tutorials from you. they have been very helpful.

    ReplyDelete