dagblog.
← Archiv

JDBC 4.0 — příjemné novinky


Připravovaná Java 6.0 sebou kromě jiného přinese i JDBC 4.0. Na co se tedy můžeme těšit?

Automatické nahrávání JDBC driveru V předchozích verzích JDBC bylo nutné zavést třídu driveru manuálně pomocí volání Class.forName(). Od Javy 6.0 je podporováno automatické natažení driveru a to pomocí nadeklarování třídy driveru v Jar manifestu (META-INF/services/java.sql.Driver) daného dodavatele driveru.
 Connection managementPodpora pro správu Statement a Connection objektů, pokud jsou sdílené. Podpora metadat, které umožňují získat informaci o stavu Connection.
 RowIdBylo přidáno nové rozhraní RowId. ROWID jednoznačně identifikuje vrácený/modifikovaný záznam v DB, jedná se o systémovou věc databáze a proto ne všechny databáze jej podporují. RowId je možné získat při procházení ResultSet objektem a nebo nastavit při práci s objektem PreparedStatement
 SQL dotazy jako anotace metodBude možné napsat SQL jako anotaci a využít nového parametrizovaného typu DataSet, který bude prezentovat vrácená data. DataSet (potomek java.util.List) je parametrizován JavaBeanou, která představuje vrácený řádek. Nejlépe vše ilustruje následující ukázka.

public class Osoba{
private id;
private jmeno;
private prijmeni;

//gettry a settry
}

public interface SQLDotazy extends BaseQuery {
@Select("select id, jmeno, prijmeni from osoba")
DataSet getOsoby();
}
Connection con = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
SQLDotazy dotazy = con.createQueryObject(SQLDotazy.class);
DataSet rows = dotazy.getOsoby();
for (Osoba osoba: rows) {
System.out.println("Jméno = " + osoba.getJmeno();
...
}

Vylepšený exception handlingJako potomci SQLException vznikly dvě nové třídy SQLTransientException a SQLNonTransientException a od nich odvozené hierarchie. SQLTransientException a její potomkové slouží pro výjimky, které mají přechodný charakter např. timeout. SQLNonTransientException slouží pro výjimky s nepřechodným charakterem např. kolize integrity dat nebo špatná syntaxe SQL. Navíc každá výjímka obsahuje metody getSQLState (vrací SQLstate podle specifikace SQL 2003), getNextException() (umožňuje získat zřetězenou výjimku) a implementuje rozhraní Iterable což umožňuje využití rozšířeného for příkazu.
 Změny v APIByla přidána podpora pro BLOBy a CLOBy a datové typy NCHAR, NVARCHAR, LONGNVARCHAR, a NCLOB (rozšířené typy respektující National Character Set)

Všechny výše popsané novinky jsou detailněji popsány v článku Srini Penchikala JDBC 4.0 Enhancements in Java SE 6. Pokud si novinky chcete vyzkoušet, budete potřebovat Javvu 6.0. Součástí SDK 6.0 by měla být i databáze Apache Derby, jejíchž driver zároveň slouží jako referenční implementace JDBC 4.0.

Verze na Medium

Související články

Související epizody CZ Podcastu