Java Source

Friday, December 01, 2006

Generické DAO

Nač použít generické typy? Tak například pro vytvoření generického DAO návrhového vzoru.
Když napíšeme DAO pomocí generických typů, můžeme pak ukládat jakékoli třídy. Samozřejmě že předním musíme nějak pro databázi namapovat. To by ovšem mělo být v moci daného DAO.

Nejdříve vytvoříme interface, a nadefinujeme jak naše DAO objekty budou vypadat. Dále přidáme generické typym kde "T" bude představovat ukládaný objekt, a "N" bude id (klíč) k danému objektu.
public interface GenericDao <T, N extends Serializable> {
N create(T o);
T read(N id);
void update(T o);
void delete(T o);
}


Po té co je interface hotov tak můžeme začít s jeho implementací. Následující implementace bude pro Hibernate. Samozřejmě že to můžeme naimplentovat jak chceme, a tady je jeden ze způsobů.
public class GenericDaoHibernate <T, N extends Serializable> implements GenericDao <T, N> {

private Class type;

public GenericDaoHibernateImpl(Class type) {
this.type = type;
}
public N create(T o) {
return (N) HibernateUtil.getSession.save(o);
}
public T load(N id) {
return (T) HibernateUtil.getSession.load(type, id);
}
public void update(T o) {
HibernateUtil.getSession.update(o);
}
public void delete(T o) {
HibernateUtil.getSession.delete(o);
}
}


Jde vidět, že používáme třídu HibernateUtil, ta slouží pro poskytování přístupu do databáze. Ve skutečnosti jen poskytuje Session, která nám umožňuje pracovat s databází.

Jak jde vidět generické typy při vhodném použití poskytují mocný nástroj pro vývoj.

1 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home