В этот момент я начинаю работу над небольшим веб-приложением на основе MVC.
Теперь я пытаюсь реализовать основные классы для макета модели с использованием шаблона DAO.
Итак, сначала я создаю два класса сущностей (например): Автор и Книга:
package myProject.model.entity;
import java.io.Serializable;
public class Author implements Serializable {
private static final long serialVersionUID = 7177014660621405534L;
private long id;
private String firstName;
private String lastName;
public Author() {
}
// getter and setter methods here
}
и Книга класса:
package myProject.model.entity;
import java.io.Serializable;
public class Book implements Serializable {
private static final long serialVersionUID = 7177014660621405534L;
private long id;
private String title;
private String description;
public Book() {
}
// getter and setter methods here
}
На следующем шаге я вижу, что классы Book и Author оба имеют getId()
и setId()
.
Итак, я создаю интерфейс Persistent
для своих классов Entity:
package myProject.model.entity;
public interface Persistent {
public long getId();
public void setId(long id);
}
Итак, сначала мой вопрос:
Это правильная реализация для model
пакета?
На следующем шаге я начинаю реализовывать классы для пакета dao
.
package myProject.model.dao;
import java.util.List;
import myProject.model.entity.Persistent;
public interface Dao {
Persistent get(long id);
void save(Persistent persistent);
void delete(long id);
}
Следующий шаг: создание интерфейсов AuthorDao
и BookDao
, расширяющих базовый дао interface Dao
Но оба интерфейса: AuthorDao и BookDao - на данный момент пустые.
Как вы думаете - это в норме, что интерфейсы пустые? Это мой второй вопрос.
И на последнем шаге я создаю пакет model.dao.hibernate
и добавляю в пакет класс AuthorDaoHibernate и BookDaoHibernate - оба класса реализуют интерфейсы AuthorDao и BookDao.
И мой главный вопрос сейчас:
мой интерфейс Dao
работает с объектами типа Persistent
, и я не использую Generics. И все хорошо и красиво.
Что вы думаете - какие преимущества я получу, если переработаю Dao
Интерфейс с Generics:
package myProject.model.dao;
import java.util.List;
import myProject.model.entity.Persistent;
public interface Dao<Persistent> {
T get(long id);
List<T> getAll();
void save(T persistent);
void delete(long id);
}
Мои классы Дао работают только с постоянными сущностями - никакой другой тип объекта ...
Неужели у вас есть какие-либо причины использовать Generics?