DB2 (SAMPLE database), Spring JDBC as a layer between user interface and database (persistence) and GWT 2.2 as a user interface.
How to setup environment - read details from SampleGWT and source code.
I ended up with the following application:
Application displays one table (EMPLOYEE) from SAMPLE database. List box at the upper left of the screen allows data sorting - it is done by adding ORDER BY clause to SELECT * FROM EMPLOYEE statement. 'Incremental' check box does nothing with the statement - data are read incrementally by default. 'Decremental' check box adds 'DESC' clause to ORDER BY.
Of course - sorting can be done also by 'Column Sorting' - new feature added in GWT 2.2 to CellTable presentation widget.
It could be very interesting challenge which sorting method is more efficient. I dare say that more data are used than data sorting by database engine will be getting the upper hand.
I used Spring JDBC for data access layer. Of course - for such a small project (one statement) it is like to take a sledgehammer to crack a nut.
But I found it very useful - it is much more elegant to have in the main business stream something like:
Listand keep somewhere else :mList = jdbc.query(query, new EmployeeRecordMapper());
private class EmployeeRecordMapper implements RowMapper{
@Override
public EmployeeRecord mapRow(ResultSet res, int arg1)
throws SQLException {
String empno = res.getString(1);
String firstname = res.getString(2);
String midinit = res.getString(3);
String lastname = res.getString(4);
String workdept = res.getString(5);
String phoneno = res.getString(6);
Timestamp hiredate = res.getTimestamp(7);
String job = res.getString(8);
int edlevel = res.getInt(9);
String sex = res.getString(10);
Timestamp birthdate = res.getTimestamp(11);
BigDecimal salary = res.getBigDecimal(12);
BigDecimal bonus = res.getBigDecimal(13);
BigDecimal comm = res.getBigDecimal(14);
EmployeeRecord el = new EmployeeRecord();
el.setEmpno(empno);
el.setFirstname(firstname);
el.setMidinit(midinit);
el.setLastname(lastname);
el.setWorkdept(workdept);
el.setPhoneno(phoneno);
el.setHiredate(hiredate);
el.setJob(job);
el.setEdlevel(edlevel);
el.setSex(sex);
el.setBirthdate(birthdate);
el.setSalary(salary);
el.setBonus(bonus);
el.setComm(comm);
return el;
}
}
then this terrible JDBC code :
ResultSet res = ....What is more important EmployeeRecordMapper class is reusable component - can be utilized everywhere statement on EMPLOYEE table is performed.
while (res.next()) {
...
}
Of course - every JDBC developer sooner or later creates his (her) own JDBC framework - during my professional life I created dozen of them. But for what purpose create next framework if Spring JDBC is already created and ready to use for free ?
Brak komentarzy:
Prześlij komentarz