
这是我的通用dao的片段,我将其插入到每个服务层类中。
@Component("Dao")public class Dao implements IDao { @Resource(name = "sessionFactory") private SessionFactory sessionFactory; @Override public <T> T save(final T o){ return (T) sessionFactory.getCurrentSession().save(o); } @Override public void delete(final Object object) { sessionFactory.getCurrentSession().delete(object); } @Override public <T> T get(final Class<T> type, final Long id) { return (T) sessionFactory.getCurrentSession().get(type, id); } @Override public <T> List<T> getFieldsEq(final Class<T> type, final Map<String, Object> restrictions) { final Session session = sessionFactory.getCurrentSession(); final Criteria crit = session.createCriteria(type); for (Map.Entry<String, Object> entry : restrictions.entrySet()) { crit.add(Restrictions.eq(entry.getKey(), entry.getValue())); } return crit.list(); }}可以在服务层中使用哪种方法,如下所示:
@Transactional(readonly = true)public List<City> getCities() { return dao.getAll(City.class);}当然,您可以将dao扩展为特定的复杂查询。有一个通用的DAO服从 的责任原则单点 , DRY
,并使其更容易测试。事务应在服务层上,并直接与工作单元有关。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)