Hibernate ou JPA ou JDBC ou? [fechadas]

Estou desenvolvendo um aplicativo Java Desktop, mas tenho algumas confusões na escolha de uma tecnologia para minha camada de persistência.

Até agora, tenho usado o JDBC para operações de banco de dados. Agora, aprendi recentemente o Hibernate e o JPA, mas ainda sou um novato nessas tecnologias.

Agora, minha pergunta é O que usar para o meu Java Desktop Application a partir do seguinte?

JPA

Hibernate

JDBC

DAO

qualquer outra sugestão sua ...

Eu sei que não há melhor escolha deles e isso depende totalmente da complexidade e dos requisitos do projeto, portanto, abaixo estão os requisitos do meu projeto

Não é uma aplicação complexa. Ele contém apenas 5 tabelas (e 5 entidades)Não quero flexibilizar meu código para poder alterar o banco de dados mais tarde com facilidadeO tamanho do aplicativo deve permanecer o menor possível, pois terei que distribuí-lo aos meus clientes pela Internet.Deve ser livre para uso no desenvolvimento e distribuição comercial.

==================================== EDITADO ============= ==========================

Com base nas respostas abaixo, gostaria de usar o JPA para evitar que eu escreva código SQL específico do fornecedor.

Mas tenho alguns problemas na JPA mencionados emAPI de persistência Java

questionAnswers(3)

yourAnswerToTheQuestion