Я работаю над веб-приложением java, которое вызывает базу данных через hibernate. Я использую сервлеты, jsp и tomcat для тестирования / развертывания. В большинстве книг по java-ee предлагается использовать классы Dao для вызовов базы данных. Согласно примерам, приведенным в книгах ( Hibernate Recipes by Gary Mak ), я создал общий базовый класс и специальный подкласс, как показано ниже.
class BaseDao{
private Class persistentClass;
public BaseDao(Class persistentClass) {
super();
this.persistentClass = persistentClass;
}
public Object findById(Long id) {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
Object object = null;
try {
object = (Object) session.get(persistentClass, id);
return object;
}
finally {
session.close();
}
}
@Override
public void saveOrUpdate(Object obj) {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(obj);
tx.commit();
}catch(HibernateException e){
if (tx != null) {
tx.rollback();
}
throw e;
}finally {
session.close();
}
}
}
class SaleOrderDao extends BaseDao{
public SaleOrderDao() {
super(SaleOrder.class);
}
@Override
public SaleOrder findSaleOrderById(Long saleOrderId){
SaleOrder so = (SaleOrder)findById(saleOrderId);
return so;
}
@Override
public void saveOrUpdateSaleOrder(SaleOrder so){
saveOrUpdate( so);
}
}
Просматривая посты на этом форуме, я натолкнулся * * * * * * * * * * * * * * * * * * Райан Стюарт * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. использовать любую веб-инфраструктуру, которая поддерживает управление транзакциями ... и я ограничен использованием jsp, сервлетов и контейнера сервлетов.
Есть ли способ, которым я могу переписать свои реализации дао, чтобы транзакции могли управляться должным образом ... Я не смог найти ничего в этом отношении из тех книг, которые я прочитал ..
Надеюсь, кто-нибудь поможет мне с предложениями
искренне,
Jim