Toma cuidado na definição que você dá a suas classes, isso pode te limitar a tomar uma solução simples e elegante. A definição é a seguinte:
:arrow: POJO: são objetos simples que não dependem de nenhum framework, pode conter métodos e propriedades em formatos arbitrários.
:arrow: Bean: são objetos com construtor vazio, getters e setters
Há uma implicação de que: todo Bean é POJO, mas nem todo POJO é Bean.
É o seguinte: a idéia dos managed beans é serem POJOs, man você vai ver que, em determinadas situações, não vai dar pra evitar a dependência com o Faces, principalmente se precisar exibir uma mensagem na tela, ou usar tabelas.
Os seus objetos do Hibernate podem ser beans, mas não deveriam, pois a regra de negócio acaba ficando em algum outro lugar espalhado e fora de contexto. Insistindo na opção de usar bean pros objetos mapeados com hibernate, você precisará criar objetos de serviço que implemente as regras de negócio.
Os managed beans são parecidos com as Actions do Struts 2, ela pode expor os beans ou POJOs mapeados pelo Hibernate e os objetos de serviço, se houver. Entenda os managed beans como “porta de entrada” da sua aplicação web, pois é o primeiro objeto seu a ser invocado quando ocorre um estímulo do usuário. É responsabilidade do managed bean delegar a tarefa para o objeto que sabe resolver o pedido do usuário.