Duvida no cadastro de informações

Pessoal,

Estou começando com struts e estou com uma dúvida que na verdade não tem anda a ver com este framework.
No cadastro que estou desenvolvendo, existe uma classe pessoa (a mais genérica), a classe funcionário (extends Pessoa), médico (extends Funcionário) e paciente (extends Pessoa).

Agora, na parte de gerencia (dao) desses beans, fiquei com a seguinte dúvida:

Para manipular esses objetos no banco, eu terei que criar uma classe de gerencia para funcionário, uma para médico e uma para paciente? Não existe uma solução mais eficiente, onde eu não necessite repetir tanto o código?

Como a maioria dos atributos esta na classe Pessoa, essa parte comum vai se repetir entre as classes de gerência.

OBS: EU NÃO GOSTARIA DE USAR HIBERNATE NO MOMENTO.