Я пытаюсь реализовать AbstractHibernateDao из одной из статей Baeldung, но когда я запускаю код, я получаю ошибку, как показано ниже:
Вызов метода «persist» недопустим без активной транзакции (Текущее состояние:NOT_ACTIVE)
Я понимаю, что каждый метод, как видно из кода, требует начала и фиксации транзакции для работы, и он работал хорошо, как только я это сделал.
Была ли транзакция начала и фиксации просто не включеныв статье для краткости или мне не хватает какой-то конфигурации?
public abstract class AbstractHibernateDao< T extends Serializable > {
private Class< T > clazz;
@Autowired
SessionFactory sessionFactory;
public final void setClazz( Class< T > clazzToSet ){
this.clazz = clazzToSet;
}
public T findOne( long id ){
return (T) getCurrentSession().get( clazz, id );
}
public List< T > findAll(){
return getCurrentSession().createQuery( "from " + clazz.getName()
).list();
}
public void create( T entity ){
getCurrentSession().persist( entity );
}
public void update( T entity ){
getCurrentSession().merge( entity );
}
public void delete( T entity ){
getCurrentSession().delete( entity );
}
public void deleteById( long entityId ) {
T entity = findOne( entityId );
delete( entity );
}
protected final Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
}
Я изучаю Hibernate и лучшие практики с Spring.Вот статья Баэльдуна https://www.baeldung.com/persistence-layer-with-spring-and-hibernate