Tôi đã đọc về kế hoạch chi tiết mặt trời GenericDAO
thực hiện và Gavin King thực hiện việc này để sử dụng với Hibernate. Có vẻ như anh ấy không đề cập đến bất kỳ điều gì về xử lý giao dịch:Thiết kế kém cho DAO có quản lý giao dịch không?
public abstract class GenericHibernateDAO<T, ID extends Serializable> {
protected Session getSession() {
return HibernateUtil.getSessionFactory().getCurrentSession();
}
public T makePersistent(T entity) {
getSession().saveOrUpdate(entity);
return entity;
}
}
Tôi đang bối rối về nơi tôi nên đặt bắt đầu/kết thúc giao dịch. Hiện nay họ đang ở trong DAO rằng mở rộng này GenericHibernateDAO
public class FooHibernateDAO extends GenericHibernateDAO<Foo, Long> {
public Foo saveFoo(Foo foo) {
getSession().beginTransaction();
makePersistent(foo);
getSession().getTransaction().commit();
}
}
việc xử lý giao dịch nên được quản lý bởi người gọi của DAO trong tầng ứng dụng?
Đó là +1 - bạn đánh bại tôi đến số –