2016-04-23 86 views
0

我是Spring的新手,試圖實現本文中的Generic DAO http://www.ibm.com/developerworks/library/j-genericdao/。我有幾個實體 - ConcreteEntity1和ConcreteEntity2。另外,我有類使用構造函數自動裝配泛型類型[Spring 4.2.5]

public interface GenericDao<T extends Serializable> { 
    public T get(long id); 
    public List<T> get(String hql); 
    public void remove(T persistentObject); 
    public void add(T entity); 
} 

@Repository("hibGenericDao") 
public class HibGenericDaoImpl<T extends Serializable> implements GenericDao<T> { 

    @Autowired 
    private SessionFactory sessionFactory; 

    private Class<T> type; 

    public HibGenericDaoImpl(Class<T> type) { 
     this.type = type; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public T get(long id) { 
     T entity; 
     try (Session session = sessionFactory.getCurrentSession()) { 
      entity = session.get(type, id); 
     } 
     return entity; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public List<T> get(String hql) { 
     List<T> entityList; 
     try (Session session = sessionFactory.getCurrentSession()) { 
      Query query = session.createQuery(hql); 
      entityList = query.list(); 
     } 
     return entityList; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public void remove(T persistentObject) { 
     try (Session session = sessionFactory.getCurrentSession()) { 
      session.delete(persistentObject); 
     } 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public void add(T entity) { 
     try (Session session = sessionFactory.getCurrentSession()) { 
      session.saveOrUpdate(entity); 
     } 
    } 
} 

現在我想寫服務層,我想自動裝配HibGenericDaoImpl<ConcreteEntity1>哪裏場type包含ConcreteEntity1.class。你能說一下如何在沒有XML的情況下執行它嗎?

回答

0

用零參數構造函數替換您的構造函數。然後你可以使用this link得到T類型的反射。

相關問題