การใช้ JDBC with Spring Framework

posted on 27 Feb 2005 03:38 by somkiat

การใช้ JDBC with Spring Framework

ตัวอย่างการใช้งาน jdbc เพื่อ access ข้อมูลใน database ซึ่งถูกจัดการโดย Spring Framework โดยตัวอย่างนี้จะเป็น java application (ไม่ใช่ web application)

Requirement

1. Database :: MySQL

2. My SQL driver :: mysql-driver.jar

3. Library of Spring frameowk สามารถ download ได้ที่ http://www.springframework

- spring.jar

- spring-core.jar

- spring-dao.jar

- common-logging.jar

มาดูตัวอย่างการใช้งานเลยครับ

1. Setup Datasource โดยทั่วไปใน web application นั้นจะทำการ config ไว้ที่ config file แต่ตัวอย่างนี้เราจะไม่ใช้ แต่ว่าจะใช้ org.springframework.jdbc.datasource.DriverManagerDataSource เป็นตัวจัดการดังนี้ครับ

private DriverManagerDataSource ds = null;

public void setupDataSource() {
ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/spring");
ds.setUsername("root");
ds.setPassword("");
}

public DriverManagerDataSource getDataSource() {

return ds;

}

2. หลังจากที่ทำการ setup datasource เสร็จแล้วมาดูกันว่าเราจะ manage data ผ่าน JDBC ด้วย spring framework กันอย่างไร

Spring's JDBC Framework นั้นจะใช้ org.springframework.jdbc.core.JdbcTemplate เป็นตัวจัดการ

การใช้งาน JdbcTemplate นั้นจะต้องทำการ set datasource ก่อนการใช้งานดังนี้

JdbcTemplate jt = null;

public void setupJdbcTemplate() {

jt = new JdbcTemplate();

jt.setDataSource(getDataSource());

}

public JdbcTemplate getJdbcTemplate() {

return jt;

}

3. หลังจากที่เราทำการ setup ทุกๆ อย่างเรียบร้อยแล้ว เรามาลองดึงข้อมูลจาก database มาใช้งานกันหน่อยครับ

Table1 ประกอบด้วย field ดังนี้

id number

name Varchar

ในการดึงข้อมูลนั้นจะต้องสร้าง class หรือว่าใช้ inner class ก็ได้ ในการ mapping row เพื่อเก็บไว้ใน bean object ดังนี้

class TestRowMapper implements RowMapper {

/* (non-Javadoc)
* @see org.springframework.jdbc.core.RowMapper#mapRow(java.sql.ResultSet, int)
*/
public Object mapRow(ResultSet rs, int index) throws SQLException {
TestValue value = new TestValue();
value.setId( rs.getString("id") );
value.setName( rs.getString("name") );
return value;
}


}

หลังจากที่สร้าง class สำหรับ map ข้อมูลลง beanobject แล้ว เรามาลองเรียกใช้งานบ้างครับ

String sql = " select * from table1 ";

/** Get data from database which using query() of JdbcTemplate. */
List allData = getJdbcTemplate().query(sql, new RowMapperResultReader( new TestRowMapper() ));

/** Retrive data */
for(Iterator it = allData.iterator(); it.hasNext();) {
TestValue value = (TestValue) it.next();
System.out.println("ID : " + value.getId());
System.out.println("Name : " + value.getName());
}

ถ้าต้องการนับจำนวน record จะต้องทำอย่างไร มาดูกันเลยครับ

public void countRecord() {
String sql = "select count(*) from table1";
System.out.println("All size : " + getJdbcTemplate().queryForInt(sql) );
}

4. การ update/delete/insert ข้อมูล

ทั้ง 3 นี้จะมีการทำงานที่เหมือนกัน ต่างกันเพียง sql statement เท่านั้นครับ

มาดูการ insert ข้อมูลกัน

/**ข้อมูลที่จะทำการ insert*/

TestValue value = new TestValue();
value.setId(new Integer(4) );
value.setName("test 4");

/**Sql statementสำหรับการinsert*/
String sql = "insert into table1 values (?,?)";

/** กำหนด parameter ของ sql statement*/
Object[] params = new Object[] { value.getId(), value.getName()};

/**กำหนด type ของcolumn ที่จะทำการ insert ข้อมูล*/
int[] types = new int[] { Types.NUMERIC, Types.VARCHAR };

/** Run การ SQL statement*/
setupJdbcTemplate().update(sql, params, types);

มาดูตัวอย่างการ delete ข้อมูลกันบ้าง

String sql = "delete from table1 where id = ?";
Object[] params = new Object[] { new Integer(2)};
getJdbcTemplate().update(sql, params);

และสุดท้ายการ update ข้อมูล

String sql = "update table1 set name = ? where id = ?";
Object[] params = new Object[] { "New data", new Integer(1)};
setupJdbcTemplate().update(sql, params);

จากการใช้งาน JDBC ด้วย Spring Framework นั้นจะเห็นได้ว่า

- Loc(Line Of Code) น้อยลงมาก

- ไม่ต้องมี try-catch-finally สำหรับการดักจับ exception และการ release resource ต่างๆ ให้แก่ระบบ

- ไม่ต้องจัดการเรื่อง connection เนื่องจากตัว spring framework เองจะจัดการให้

ต่อไปจะนำเรื่องการจัดการ transaction การใช้งานร่วมกับ OR mapping อื่นๆ และ web application ครับ

แต่ตอนนี้ไปนอนก่อนครับ ไม่ไหวแล้ว เหนื่อยมาทั้งวันเลยครับ

Comment

Comment:

Tweet

Holyoak juicy couture said louis vuitton,louis vuitton canada,louis vuitton outlet,louis vuitton outlet online beachings swarovski jewelry of polo ralph lauren juvenile salmon converse pas cher sharks air max aren't common, but louboutin,christian louboutin,louboutin shoes,louboutins,louboutin uk,christian louboutin uk,red bottom shoes,red bottoms,louboutin outlet,christian louboutin shoes,christian louboutin outlet they're not instyler ionic styler,instyler unusual on nike free,free running,nike free run,nike free 5.0,free running 2,nike running shoes,nike free trainer,nike free trainer 5.0,free runs,free run 5.0 the Oregon coach outlet,coach factory,coach factory outlet,coach outlet store,coach outlet store online,coach factory online,coach factory outlet online,coach outlet online coast. "Most of michael kors canada the burberry outlet online,burberry outlet,burberry,burberry handbags,burberry factory outlet,burberry sale time when oakley sunglasses cheap,cheap oakley sunglasses,oakley sunglasses,oakley vault,oakleys,oakley.com,sunglasses outlet,cheap oakley,oakley outlet,cheap sunglasses,oakley prescription glasses,fake oakleys,oakley sunglasses outlet,oakley glasses,oakley store,fake oakley,oakley sale,cheap oakleys,discount oakley sunglasses people moncler jackets see them on the beach, they've already swarovski uk died," oakley he nike free,free run,nike free run,nike free pas cher,nike free run pas cher,nike free france said.

 

Thankfully, hollister,hollister canada,abercrombie and fitch,abercrombie,abercrombie and,abercrombie kids,af he sac louis vuitton,louis vuitton,louis vuitton pas cher,sac louis vuitton pas cher,louis vuitton france was able burberry outlet online,burberry,burberry outlet,burberry handbags,burberry factory outlet,burberry sale to valentino shoes,valentino,valentinos get to nike blazer this shark before it cheap oakley was longchamp,longchamp bags,longchamp uk too late.Back louis vuitton outlet stores,louis vuitton outlet online,louis vuitton,louis vuitton outlet,louisvuitton.com,authentic louis vuitton,louis vuitton factory outlet,cheap louis vuitton in mcm handbags,mcm bags,mcm backpack,mcm outlet August 2012, karen millen dresses Alan Holyoak ugg,ugg australia,uggs,ugg pas cher,ugg soldes,bottes ugg,bottes ugg pas cher went to Seaside, Oregon, true religion for ray ban sunglasses uk his ray ban sunglasses,ray ban sunglasses outlet,ray ban,rayban,ray bans,ray ban outlet,ray-ban,raybans,ray ban wayfarer,ray-ban sunglasses,raybans.com,rayban sunglasses,cheap ray ban niece's wedding. He never expected that he'd sac longchamp,longchamp,longchamps,longchamp pas cher,sac longchamp pas cher,longchamp pliage,longchamp soldes,sac longchamps,longchamp france come back kate spade handbags,kate spade,kate spade outlet,katespade a hero.

 

Holyoak has a background canada goose outlet in iphone 6s cases marine ferragamo shoes,ferragamo,salvatore ferragamo,ferragamo belts,ferragamo belt,ferragamo outlet biology moncler and louis vuitton,louis vuitton bags,louis vuitton handbags,louis vuitton uk teaches at Brigham celine handbags,celine bag,celine bags Young ugg,ugg australia,ugg italia University. gucci Returning prada outlet,prada,prada handbags,prada sunglasses,prada shoes,prada bags from herve leger,herve leger dresses an lancel early converse shoes,converse,converse.com,converse sneakers,converse outlet walk lululemon outlet,lululemon,yoga pants,lulu lemon,lulu.com,lululemon.com one morning, moncler he and giuseppe zanotti his louis vuitton,louis vuitton outlet online,louis vuitton outlet,louisvuitton.com,authentic louis vuitton,louis vuitton factory outlet,cheap louis vuitton wife ugg boots,uggs,ugg,ugg boots uk,ugg uk saw abercrombie and fitch,abercrombie and,abercrombie,abercrombie kids,abercrombie fitch,abercrombie.com a person michael kors staring nike roshe uk at louis vuitton,borse louis vuitton,louis vuitton sito ufficiale,louis vuitton outlet an object lying just where canada goose outlet the waves break oakley sunglasses on links of london uk the moncler beach.

 

"I rolex watches,replica watches,omega watches,rolex watches for sale,replica watches uk,fake rolex couldn't north face tell michael kors outlet online what nike shoes,nike outlet,nike factory,nike store,nike factory outlet,nike outlet store,cheap nike shoes,nike sneakers it longchamp,longchamp handbags,longchamp outlet,longchamp bags,long champ was from polo ralph lauren outlet online,ralph lauren,polo ralph,polo ralph lauren,ralph lauren outlet,polo shirts,ralph lauren outlet online,polo ralph lauren outlet,ralphlauren.com,polo outlet,ralph lauren polo a mont blanc distance," timberland shoes Holyoak nike trainers told The Dodo. vans,vans pas cher,vans soldes "It was ray ban sunglasses outlet,ray ban sunglasses,ray ban,rayban,ray bans,ray ban outlet,ray-ban,raybans,ray ban wayfarer,ray-ban sunglasses,raybans.com,rayban sunglasses,cheap ray ban pretty michael kors outlet big. I louboutin,christian louboutin,red bottom shoes,louboutin shoes,red bottoms,louboutin outlet,christian louboutin shoes,christian louboutin outlet,red bottom shoes for women,louboutins didn't know nike huarache if louboutin,chaussure louboutin,louboutin pas cher,chaussures louboutin,chaussure louboutin pas cher,louboutin france it birkin bag,hermes belt,hermes handbags,hermes birkin,hermes bags,birkin bags was thomas sabo uk a abercrombie juvenile coach purses,coach handbags,coach bags dolphin tiffany and co jewelry,tiffany and co outlet,tiffany and co,tiffany's,tiffanys,tiffany co,tiffany jewelry or longchamp outlet,longchamp,longchamp handbags,longchamp bags,long champ what. louis vuitton,sac louis vuitton,louis vuitton pas cher,sac louis vuitton pas cher,louis vuitton france So hollister clothing we oakley sunglasses,cheap oakley sunglasses,oakley sunglasses cheap,oakley vault,oakleys,oakley.com,sunglasses outlet,cheap oakley,oakley outlet,cheap sunglasses,oakley prescription glasses,fake oakleys,oakley sunglasses outlet,oakley glasses,oakley store,fake oakley,oakley sale,cheap oakleys,discount oakley sunglasses walked michael kors handbags,michael kors outlet,michael kors outlet online,michael kors,kors outlet,michael kors outlet online sale,michael kors handbags