Monday, April 27, 2009

Database Lesson 4 - Database + Java integration using iBatis (part 1)

Now since ok na ang development environment natin, balik coding tayo. We'll be using iBatis. Ok, so ano ba 'tong iBatis na to? iBatis is a persistence framework and helps in mapping of SQL databases to Java. Pwede din sya sa .Net and Ruby on Rails. In short, pinapadali nito ang pag setup ng communication/transactions between the database at Java.

Bale, para mas maintindihan, eto ang example:

Using yung Brandtable natin sa previous post, meron tayong table na ganito ang structure/database schema:

TABLE BRANDTABLE(ID INT PRIMARY KEY, BRAND VARCHAR(20), MODEL VARCHAR(12))

Ngayon, gagawa tayo ng Java object na katumbas ng table na yan:

com.pinoyjavatutorial.dao BrandTableJavaObject (id: int, brand: String, model: String)

Yung mapping ng ID, brand at model sa Brandtable at Java object natin ay gagawin natin sa sql. Miya papakita ko yun. Step by step muna tayo para walang mabigla.

First, gawin muna natin yung java object natin:
1. Run eclipse
2. Create tayo ng new project: File -> New -> Java Project -> . Kung wala sa option yung Java project, try nyo to: File -> New -> Other -> Java -> Java Project -> Next. If magtanong yung eclipse about 'Java Perspective', just click 'Yes'. Kung wala naman, ayos lang, next step na tayo.
3. At 'Project name:' field, type in 'SampleDatabaseProject' then click 'Finish'
4. Dun sa 'Project Explorer' na tab (nasa right side yun), right click on 'SampleDatabaseProject' then 'New' -> 'Class'
5. Sa 'Package:' field, type in 'com.pinoyjavatutorial.dao', sa 'Name' field naman, type 'BrandTableJavaObject'
6. Click 'Finish'
7. Eto ang codes ng BrandTableJavaObject:

package com.pinoyjavatutorial.dao;

public class BrandTableJavaObject {

private int id;
private String brand;
private String model;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}

}

8. Click save.

Ok, so ano ba tong class na to? Bale gumawa lang tayo ng Java object na merong tatlong variables (or in Java terms its fields or properties of a class) sa loob:

private int id;
private String brand;
private String model;


Tapos meron tayong mga methods na nag-ge-get (para makuha natin ang value) at set (para makapag set tayo ng laman) sa tatlong variables na ito. These methods are usually referred to as setters and getters methods. My shortcut sa eclipse para hindi na kayo mag type ng mga getters and setters na methods. Pero sa ibang tutorial ko na yun ilalagay.

Next, yung XML mappings:

1. Dun sa 'Project Explorer' na tab (nasa right side yun), right click on 'SampleDatabaseProject' then 'New' -> 'Package'
2. Sa 'Name' field, type in: 'com.pinoyjavatutorial.dao.sql' and click 'Finish'
3. Dun sa empty package na kakagawa lang natin, right click kayo dun then choose 'New' -> 'Other' -> 'XML' -> 'XML' -> 'Next'
4. Sa 'Filename:', type in 'BrandTable.xml' and click 'Finish'
5. Dun sa 'BrandTable.xml', meron nun 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" ?>

Bale da-dagdagan natin yan para maging ganto:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="BrandTable">
<select id="selectByID"
resultClass="com.pinoyjavatutorial.dao.BrandTableJavaObject">

SELECT
ID as id,
BRAND as brand,
MODEL as model
FROM BRANDTABLE
WHERE ID = #value#
</select>
</sqlMap>


Medyo nagugulo yung spacing pag nag post ako. Probably because of the tags. Medyo tamad na kong mag lagay pa ng non-breaking space (&nbsp) kaya paki space bar nyo na lang para maayos yung hitsura. Kahit ano naman ang spacing nyan oks lang. Basta yung readable para sa inyo.

Ok, so ano ba tong mga codes na to? Line by line ko ulit ie-explain:

<?xml version="1.0" encoding="UTF-8" ?>
-XML version and encoding stuff lang to. Nothing much. Hayaan nyo lang yan.

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

-Just declares about the doctype. Kahit di nyo na yan bigyan pansin sa ngayon.

<sqlMap namespace="BrandTable">
-It states na gagamit tayo ng namespace na "brandTable ang pangalan. Pag ginamit na natin miya, saka nyo mas maiintindihan.

<select id="selectByID" resultClass="com.pinoyjavatutorial.dao.BrandTableJavaObject">
SELECT
ID as id,
BRAND as brand,
MODEL as model
FROM BRANDTABLE
WHERE ID = #value#
</select>

-Ok, to na yung select statement natin. Bale binigyan natin sya ng name na 'selectbyID' at ang result e ilalagay nya sa kaninang class (BrandTableJavaObject) na ginawa din natin.

Magiging ganto ang hitsura ng eclipse nyo:
Just like my other screenshots, click nyo lang para mag full size yung screenshot.

Medyo mahaba na kaya I'll continue this to my next post. :)

1 comment: