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.
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ů.
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.
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:
At March 24, 2007 4:58 PM ,
Anonymous said...
This post has been removed by a blog administrator.
Post a Comment
Subscribe to Post Comments [Atom]
<< Home