JPA, obrigatório getters e setters?

Eu sempre acreditei que era obrigatório o uso de getters e setters para uma entidade JPA.
Até o dia que me falaram que não era necessário, pior que testei e deu certo.

Alguém sabe como o JPA injeta os valores nos campos?
Só pode ser via Reflection, certo?

No Hibernate (antes de existir o JPA) já era assim ou ele fazia o uso de seus getters e setters?

Sim é por reflection.

Sim desde antes de JPA, dava para mapear atributo via XML.

Agora que você sabe que não é obrigatório, por favor pense duas vezes antes de criar getters e setters para todos os atributos de sua entidade - e viva o encapsulamento!

Têm este artigo da Caelum bem legal:


[]s