Eu faço assim… acessar o atributo com leitura normalmente diretamente… uso Getters apenas se souber que o atributo precisa de inicialização… como estou programando dentro da propria classe normalmente eu sei disso… na duvida, acesso via o getter…
O set, eu não gosto de acessar diretamente… não por kestão de visibilidade ou não… pq acredito que o local para conter a logica de modificação do atributo deve estar dentro do set… sendo assim o uso corriqueiramente dentro da minha classe…
Não preciso ficar me lembrando assim de pormenores de modificação nem dentro da propria classe… dentro do set ficam meus Constranit e o que for necessario… não se acustumar com isso, pode levar a vc dentor de 1 ponto da classe se equivocar, e modifcar um atributo que é invalido pra sua logica… trocar o atributo dentro do set, vai garantir a logica… e testar os Constraint…
Só não modifico via SET, quando a mudança é totalmente interna e não passa por intervenção externa, ou seja, o meio externo não vai fazer com que o meu objeto possa sair do estado correto, ai por questão de performance, passo direto do set, pra não checar os constraint, mais é raro, geralmente vou via set…
…
por exemplo meu setName(String nome) sempre testa
Consistencies.notNull(nome);
Consistencies.sizeBetewen(3,50,nome);
Consistencies.onlyLatters(nome);
ai não da, pra ficar modificando por vias normais, por isso prefiro concentrar essas logicas no set, e modificar apenas por ele…
o getter acho mais livre, desde que não seja necessario o LAZY no atributo… ai eu acesso via getters tb… sendo assim, minhas entidades acesso tudo por setter e getters ^^