Обобщить методы для приложения, используя шаблон JDBC - PullRequest
0 голосов
/ 16 декабря 2011

Я занимаюсь разработкой демонстрационного приложения с использованием Spring MVC v3.0 и шаблона Jdbc. В моем приложении для другого модуля -2 нам нужны такие же методы, как сохранение, обновление, удаление и т. Д. Так, вместо того, чтобы писать снова и снова один и тот же метод для разных модулей. Есть ли у нас какой-либо способ реализовать такую ​​функциональность в общем классе (абстрактный класс).

Надеюсь, что какой-нибудь друг даст мне хороший способ изучить и реализовать эту функцию.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

создайте класс Abstract

public abstract class AbstractDaoImpl<E,F> extends HibernateDaoSupport{

public abstract Class<E> getEntityType();

public void update(Object updateObject) throws DAOException {
    try  {
        getHibernateTemplate().saveOrUpdate(updateObject); 
        getHibernateTemplate().flush();
    }catch(Exception ex){
        logger.error("Error updating attachment: " + ex.getMessage());
        throw new DAOException(ex.getMessage(),Code.DAO_EXCEPTION);
    }finally {} 

    //To find by ID

        @SuppressWarnings("unchecked")
        @Override
        public E retrieveSingleMatch(F id) {
           return (E) getHibernateTemplate().get(getEntityType(), (Serializable) id);
        }


}

и реализации Dao

public class StudentDaoImpl<Student,String> extends AbstractDaoImpli implements MyDao {

    @SuppressWarnings("unchecked")
    public Class getEntityType() {
        return Student.class;

    }

}

Ваш код обслуживания будет

    studentDao.update(anyDomainObject);
    Student student = studentDao.retrieveSingleMatch(studentId);

в зависимости от вашего объекта,

0 голосов
/ 16 декабря 2011

Вы можете сделать это, имея суперкласс с методом сохранения, который принимает параметр типа объекта, а затем вы должны проверить instanceOf и реализовать. Но я предлагаю вам использовать разные методы для другого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...