← Back to list

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?

Roman Pichlík in dagblog · 2006-08-08 09:15 · 0 claps · 1.3 min read
#databaze #java-6
Open on Medium ↗

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.


메타데이터
post_id
68bbf6ac23a2
slug
jdbc-4-0-příjemné-novinky-68bbf6ac23a2
url
https://medium.com/dagblog/jdbc-4-0-p%C5%99%C3%ADjemn%C3%A9-novinky-68bbf6ac23a2
canonical_url
https://medium.com/dagblog/jdbc-4-0-p%C5%99%C3%ADjemn%C3%A9-novinky-68bbf6ac23a2
author_url
https://medium.com/@dagi
status
ok
fetched_at
2026-07-30 22:11:07