Estrutura de projeto - Jsf, Spring e Hibernate

Bom dia,

Gostaria de uma ajuda ou melhor uma orientação quanto a estrutura de um projeto que pretendo iniciar.

Estou integrando JSF com Spring para utilizar a parte de DI e AOP. Vou utilizar Hibernate para a parte do trabalho com banco de dados.

Gostaria de saber se estão de acordo quanto a divisão que estou fazendo em relação as responsabilidades das classes:

Criei uma classe chamada PessoaBean:

[code]package br.com.jsf.especie.controller;

import br.com.jsf.especie.bean.PessoaBean;

public class PessoaController {

private PessoaBean pessoaBean;

public PessoaController() {
}

public PessoaController(PessoaBean pessoaBean) {
	this.pessoaBean = pessoaBean;
}

public void setNome(String nome) {
	pessoaBean.setNome(nome);
}

public void setSobrenome(String sobrenome) {
	pessoaBean.setSobrenome(sobrenome);
}

public String getNome() {
	return pessoaBean.getNome();
}

public String getSobrenome() {
	return pessoaBean.getSobrenome();
}

public String salvaPessoa() {
	System.out.println(pessoaBean.getNome());
	
	return "Sucesso";
}

public void setPessoaBean(PessoaBean pessoaBean) {
     this.pessoaBean = pessoaBean;
}

}
[/code]

Outra PessoaController, que recebe injeção através do spring para de PessoaBean e que vai trabalhar atendendo os eventos das requisições de paginas JSF

[code]package br.com.jsf.especie.controller;

import br.com.jsf.especie.bean.PessoaBean;

public class PessoaController {

private PessoaBean pessoaBean;

public PessoaController() {
}

public PessoaController(PessoaBean pessoaBean) {
	this.pessoaBean = pessoaBean;
}

public void setNome(String nome) {
	pessoaBean.setNome(nome);
}

public void setSobrenome(String sobrenome) {
	pessoaBean.setSobrenome(sobrenome);
}

public String getNome() {
	return pessoaBean.getNome();
}

public String getSobrenome() {
	return pessoaBean.getSobrenome();
}

public String salvaPessoa() {
	System.out.println(pessoaBean.getNome());
	
	return "Sucesso";
}

public void setPessoaBean(PessoaBean pessoaBean) {
     this.pessoaBean = pessoaBean;
}

}
[/code]

Outra PessoaDao, que vai trabalhar com a parte de banco de dados junto com o Hibernate e que implementa uma Interface com métodos clássicos incluir, excluir, listar e atualizar.

Estou seguindo um pensamento certo quanto a estrutura que quero implementar?

Agradeço.