use*_*011 4 java dao model persistent
此刻,我有两个课程:UserHibernateDao和TicketHibernateDao:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.User;
public class UserDaoHibernate extends HibernateDaoSupport implements Dao<User> {
public User get(long id) {
return getHibernateTemplate().get(User.class, id);
}
public void save(User user) {
getHibernateTemplate().save(user);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(User.class, id));
}
}
Run Code Online (Sandbox Code Playgroud)
第二个:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.Ticket;
public class TicketDaoHibernate extends HibernateDaoSupport implements
Dao<Ticket> {
public Ticket get(long id) {
return getHibernateTemplate().get(Ticket.class, id);
}
public void save(Ticket ticket) {
getHibernateTemplate().save(ticket);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(Ticket.class, id));
}
public void save(Ticket ticket) {
getHibernateTemplate().saveOrUpdate(ticket);
}
}
Run Code Online (Sandbox Code Playgroud)
我看到这两个类包含几乎相同的方法和方法实现.
我想,这不是很好.你怎么看?还是很正常的?
这样的东西应该适合你,它通常被称为"通用DAO模式".
public abstract class BaseDaoHibernate<T> extends HibernateDaoSupport implements Dao<T> {
private final Class<T> entityType;
protected BaseDaoHibernate(Class<T> entityType) {
this.entityType = entityType;
}
public T get(long id) {
return getHibernateTemplate().get(entityType, id);
}
public void save(T entity) {
getHibernateTemplate().save(entity);
}
public void remove(long id) {
getHibernateTemplate().delete(get(id));
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
public class TicketDaoHibernate extends BaseDaoHibernate<Ticket> {
public TicketDaoHibernate() {
super(Ticket.class);
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class UserDaoHibernate extends BaseDaoHibernate<User> {
public UserDaoHibernate() {
super(User.class);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |