Hibernate - Duvidas quanto ao gerenciamento de conexões e consultas

Pessoal, considerando o uso de um pool de conexões (num dataSource), o gerenciamento do ciclo de vida desta deve ser feita de forma programatica? (open, close, etc.) ? Considerando um ambiente não web, não tem algum framework que poderia controlar pra mim? Tipo o spring, nao faz isso? AspectJ?

Outra duvida… por que, preciso fazer um beginTransaction (iniciar uma TRANSACAO) quando faço uma consulta ? (find simples) - sendo que isso não é uma transacao… nao precisa de commit… pq ele me obriga a fazer isso pra funcionar ? (senao dah “not active transaction…”)

valeu pessoal