Questão Hibernate/Struts2

Olá estou com uma duvida ao usar o hibernate e o struts2, de acordo com oque entendi do modelo MVC teremos uma JSP que chamara action que ira chamar o DAO.
Entao toda a parte de comunicacao com o banco ficara no DAO correto?

Devo colocar no DAO sempre as linhas abaixo?

session.getTransaction().begin();
session.getTransaction().commit();

Quero dizer em qualquer operacao com o BD sera necessario dar o begin e um commit?

Segue o exemplo de como ficou o trecho do codigo no DAO para adicionar objetos.

		Usuario u = new Usuario();
		u.setNome("xxxx2");
		
		Session session = new HibernateUtil().getSession();
		session.getTransaction().begin();
		session.save(u);
		
		
		System.out.println("ID do produto: " + u.getId());
		session.getTransaction().commit();		
		session.close();

Poderiam me dizer se esqueci alguma coisa importante no codigo acima, em um ambiente de produção seria feito desta mesma forma onde os recursos devem ser economizados?

Fico no aguardo abraço

Ninguem?? :shock: