Salvar dados usando Hibernate

Estou lendo a apostila da Caelum FJ-21 e nela informa que eu consigo gravar objetos usando apenas Session.

public void salva(Produto produto){ this.session.save(produto); this.session.close(); }
Mas desse jeito não grava.

Agora usando Transaction consigo gravar normalmente.

public void salva(Produto produto){ this.tx = this.session.beginTransaction(); this.session.save(produto); this.tx.commit(); this.session.close(); }

Pq ?

Só é possível gravar dados via Hibernate dentro do contexto de uma transação. Às vezes você não precisa iniciar explicitamente a transação (por exemplo, se estiver num ambiente EJB, ou então anotando métodos através do Spring), mas, de resto, você vai ter de usar Transaction’s.