Hlavní navigace

S javou do databáze (2)

Vojtěch Patrný

Minule jsme si ukázali, jak se připojit do databáze z Javy. Používali jsme čisté java.sql nebo ConnBean. Dnes se zaměříme na ConnCacheBean a DbBean, také z projektu DbBeans, které naši práci výrazně zjednodušují.

Příklady

Příklady generují naši známou tabulku z prvního dílu, a to pomocí ConnCacheBean a DbBean. Druhý příklad generuje XML z databáze.

ConnCacheBean

ConnCacheBean je složitější než ConnBean, zato však umožňuje poolování připojení do databáze a jednoduchý dohled nad nimi.

Hlavní výhodou poolování připojení do databáze je, že pool vytvoří několik připojení (u ConnCacheBean standardně pět), které potom pružně přiděluje klientům. V našem případě jednomu klientovi, kterým je tomcat. Odpadá nutost neustálého vytváření nových připojení, čímž odlehčíte databázi. Pět připojení je dost pro malé až střední weby. Základní myšlenkou poolování je tedy několik připojení pro více klientů.

Používání poolu s sebou přináší jiný způsob programování přístupů do databáze – dříve(ConnBean) jste se připojili, uložili připojení do session a dále se o něj nestarali.

<jsp:useBean id="cbean" class="patrny.sql.ConnBean" scope="session">
    <jsp:setProperty name="cbean" property="driver"
    value="org.gjt.mm.mysql.Driver"/>
    <jsp:setProperty name="cbean" property="URL" value="jdbc:
    mysql://localhost/employee?useUnicode=true&characterEncoding=
    iso-8859-2"/>
    <jsp:setProperty name="cbean" property="user" value="user"/>
    <jsp:setProperty name="cbean" property="password" value="password"/>
</jsp:useBean>
<%
java.sql.Connection conn = cBean.getConnection();
...

/* Můžete připojení vesele používat.
 *
 * Jen ho nezavíráte, zavře se samo, až vyprší session.
 */
%>

Tady si před každým voláním databáze vyžádáte připojení, pool vám ho vrátí, vy provedete operaci v databázi a připojení zavřete. Tím se ale připojení nezavře, pouze se vrátí do poolu, kde je dále k dispozici.

<jsp:useBean id="ccbean" class="patrny.sql.ConnCacheBean"
scope="application">
    <jsp:setProperty name="ccbean" property="driver"
    value="org.gjt.mm.mysql.Driver"/>
    <jsp:setProperty name="ccbean" property="URL" value="jdbc:
    mysql://localhost/employee?useUnicode=true&characterEncoding=
    iso-8859-2"/>
    <jsp:setProperty name="ccbean" property="user" value="user"/>
    <jsp:setProperty name="ccbean" property="password" value="password"/>
</jsp:useBean>
<%
java.sql.Connection conn = ccBean.getConnection();
...

/* Můžete připojení vesele používat.
 *
 * Jakmile jste skončili s připojením, měli byste ho zavřít,
 * aby bylo k dispozici dalším.
 * A to i tehdy, budete-li ho v této stránce ještě potřebovat
 * - jednoduše si ho poté znovu vyžádáte.
 */

conn.close();
...
%>

Příklad z minulého dílu, převedený na ConnCacheBean a DbBean, je tady.

Rozdíly mezi ConnBean a ConnCacheBean

Tabulka č. 186
Rozdíl ConnBean ConnCacheBean
Scope, do kterého se umisťuje Session. Je k dispozici pouze jednomu klientovi. Application. Je k dispozici všem klientům.
Způsob práce s připojením Připojení se nezavírá, zavře se samo. Připojení je nutné navřít pokaždé, když jsme dokončili blok sql operací.
Velikost webu Hodí se pouze pro menší weby. Hodí se spíše pro střední weby, je větší než ConnBean.
Nevýhody Session vyprší po poměrně dlouhé době – hromadění připojení. Všechna připojení se musí zavřít, jinak se pool vyprázdní a nebude možné s ním pracovat.

DbBean

DbBean je jednoduchoučký javabean, který se nestará o připojení, ale ulehčuje práci se získáváním dat z databáze. Data může vrátit jako HTML tabulku, nebo jako XML.

HTML tabulku vrací pomocí funkce getResultAsHTMLTa­ble(ResultSet rs), vrátí pouze tělo tabulky(tedy <tr> a <td>), hlavičku si musíte dopsat sami. Tyto funkce jsou použity v předchozím příkladu s ConnCacheBean.

XML vrací funkce getResultAsXML(ja­va.sql.ResultSet rs, String encoding, String rowName), kde rowName je název řádků.

<jsp:useBean id="ccbean" class="patrny.sql.ConnCacheBean"
scope="application">
    <jsp:setProperty name="ccbean" property="driver"
    value="org.gjt.mm.mysql.Driver"/>
    <jsp:setProperty name="ccbean" property="URL" value="jdbc:
    mysql://localhost/test?useUnicode=true&characterEncoding=iso-8859-2"/>
    <jsp:setProperty name="ccbean" property="user" value="user"/>
    <jsp:setProperty name="ccbean" property="password" value="password"/>
</jsp:useBean>
<%-- DbBean se používá ve scope page, tzn. nijak se nesdílí a po
vygenerování stránky se zruší --%>
<jsp:useBean id="dbbean" class="patrny.sql.DbBean" scope="page"/>

<% /* Vyžádá si připojení z poolu */
Connection conn = ccbean.getConnection();
%>

<%-- Získá ResultSet z metody executeQuery a potom vygeneruje XML
tabulku. --%>
<%= dbbean.getResultAsXML(dbbean.executeQuery("SELECT * FROM
employee ORDER BY id", conn), "iso-8859-2", "zamestnanec")%>

<% /* Vrátí připojení do poolu. */
conn.close();
%>

Kompletní příklad je tady.

Tímto končí náš miniseriál o připojování se z Javy do databáze. Měli byste mít základní představu o tom, jak zacházet s databází v Javě. Pro další studium je ideální java.sun.com. Opensource DbBeans nabízí více, než jsme tady společně prošli, podívejte se na javadoc, který je součástí programu.

Našli jste v článku chybu?

13. 9. 2001 20:04

Vojtěch Patrný (neregistrovaný)

Stáhněte si novou verzi dbbeans, nepadá když vám spadnou spojení, má debug mode, ...
http://www.mycgiserver.com/~vojtech/dbbeans2.zip


31. 8. 2001 11:06

Rob (neregistrovaný)

To je škoda, že seriál končí.
Líbil se mi.
Těšil jsem se, že naváže popis nějakých programů (či java komponent), jenž umožní např. administrovat na dálku databázi (ve smyslu prohlížení a změn struktury tabulek, indexů, referenční integrity, trigrů atd...) protože dělat to přes do javy zabalené SQL příkazy asi není moc operativní.
Dál bych uvítal tipy na nějaké komponenty uživatelského rozhraní, (např. db. mřížky umožňující měnit šířku sloupců, ....) a praktické zkušenosti s používáním t…


120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Podnikatel.cz: 3, 2, 1..EET startuje. Na co nezapomenout?

3, 2, 1..EET startuje. Na co nezapomenout?

DigiZone.cz: Co chtějí operátoři při přechodu na DVB-T2?

Co chtějí operátoři při přechodu na DVB-T2?

DigiZone.cz: ČT láká na jarní programové tipy

ČT láká na jarní programové tipy

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu