Dúvida de iniciante (sobre estrutura, mas como sou iniciante)

Olá, este é meu primeiro POST, mas já há algum tempo acompanho o fórum.

Venho do PHP e comecei programando de maneira procedural, com o tempo fui entendendo as vantagens de se programar orientado a objeto e em PHP mesmo comecei a estruturar minhas aplicações para trabalharem OO.

Há uns 3 meses comprei alguns livros e já estou fazendo algumas coisas, pois pretendo fazer um curso (Caelum) mas quero chegar já conhecendo alguma coisa, creio q já estou num estágio bom sobre java, já faça algumas coisas.

Minha dúvida:

Entendi que se tem que se trabalhar em camadas (apresentação, controle (negógios?) e persistência) e quando vou trabalhar num projeto, sempre tenho dúvidas onde colocar as seguintes regras:

DB com tabela pessoa, com campos id, nome, email, sei que precisarei ter uma classe que irá fazer a comunicação entre DB e camada de negócios, algumas regras (opcionalmente) o banco irá controlar, ex. nome não pode ser vazio, id não pode repetir (pk) e por ai vai, mas preciso ter a seguinte regras:

o nome tem q ter no mínimo 5 posições, o model (<- esse é o nome correto?) classe Pessoa tem apenas as propriedades (id, nome, email) e setters e getters, através da classse PessoaDAO trabalho com banco, onde coloco está validação? no model, na DAO, tenho essa dúvida, imaginando que estas classes serão utilizadas em camadas de apresentação diferentes?

AAAquino,

De uma olhada nestes tópicos, escritos pelo Shoes, acredito que lhe ajude no entendimento.

http://www.fragmental.com.br/wiki/index.php?title=Main_Page

[quote=fsquadro]AAAquino,

De uma olhada nestes tópicos, escritos pelo Shoes, acredito que lhe ajude no entendimento.

http://www.fragmental.com.br/wiki/index.php?title=Main_Page
[/quote]

Obrigado pela resposta, já andei olhando esta página e não me esclareceu muito, aguardo outras respostas