Objaśnienie kodu

0

Witam Czy mogłby jakiś Pan mi to objaśnić step by step? Nie mam bladego pojęcia o co chodzi z góry dzięki

 
    public T find(Object id, Object o) {
        setSession(WorkHibernateUtil.getSessionFactory().getCurrentSession());
        getSession().beginTransaction();
        Criteria criteria = getSession().createCriteria(o.getClass());
        criteria.add(Restrictions.eq("id", id));
        Object result = criteria.uniqueResult();
        getSession().getTransaction().commit();
//        WorkHibernateUtil.getSessionFactory().close();
        return (T) result;
    }

    public List<T> findAll(Object o) {
        setSession(WorkHibernateUtil.getSessionFactory().getCurrentSession());
        getSession().beginTransaction();
        Criteria criteria = getSession().createCriteria(o.getClass());        
        List list = criteria.list();
        List<Object> objects = list;
        getSession().getTransaction().commit();
//        WorkHibernateUtil.getSessionFactory().close();
        return (List<T>) objects;
    }
0

A czego nie rozumiesz - hibernate'a czy generyków ?

BTW: tu nie ma Panów tylko ziomki i przyjacieje :D

0

Generyków chyba bardziej bo o hibernate mam blade pojecie

0

Tyle co wczoraj wyczytałem z dokumentacji to metody find() i findAll() wyszukują obiekty znajdujące się w liście i zwraca true? jeśli taki obiekt albo tablica znajdują się w niej.
Dobre jest to że nie trzeba przeciążać metod ani rzutować na odpowiedni typ jak to ponoć się kiedyś robiło

 public class TypyGeneryczne {

   
    public static void main(String[] args) {
	Integer[] intTab = {1,2,3,4,5,6,7,8,9,0};
	Character[] chTab = {'w','e','c'};
	wypiszElementyTablicy(intTab);
	wypiszElementyTablicy(chTab);
    }
    
    public static <T> void wypiszElementyTablicy(T[] tab){
	for(T element : tab)
	    System.out.printf("%s ",element);
	System.out.print("\n");
    }
}

Pokuszę się o wyjaśnienie:
to wszystko co tu jest to definiowanie obiektu result w metodzie find()

 
 public T find(Object id, Object o) {
        setSession(WorkHibernateUtil.getSessionFactory().getCurrentSession());
        getSession().beginTransaction();
        Criteria criteria = getSession().createCriteria(o.getClass());
        criteria.add(Restrictions.eq("id", id));
        Object result = criteria.uniqueResult();
        getSession().getTransaction().commit();

Następnie zwracany jest ten obiekt jeśli zostanie znaleziony:

return (T) result;
    } 

W drugiej metodzie zwracana jest cała lista obiektów wcześniej zdefiniowanych - a raczej wszystkie wystąpienia tego obiektu w postaci listy.

public List<T> findAll(Object o) {
        setSession(WorkHibernateUtil.getSessionFactory().getCurrentSession());
        getSession().beginTransaction();
        Criteria criteria = getSession().createCriteria(o.getClass());        
        List list = criteria.list();
        List<Object> objects = list;
        getSession().getTransaction().commit();
//        WorkHibernateUtil.getSessionFactory().close();
        return (List<T>) objects;
    } 

Nie jestem wiarygodnym źródłem jeszcze - mogę się mylić ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1