Hibernate: Должен ли я включить начальную транзакцию и зафиксировать в абстрактном дао? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь реализовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...