Conexão com banco de dados

Eu tenho uma aplicação em Delphi. Não é uma aplicação grande, ela é pequena. Umas 34 tabelase mais umas 30 telas, além de 15 relatórios. Como é uma aplicação pequena, resolvi passar para Java, pois eu estou aprendendo Java(Web, JSF, Hibernate,JPA,Struts e etc…). Baixei um exemplo que um colega me passou sobre JSF e agregados e resolvi estudar esse exemplo e por ele ir montando o meu projeto. Tenho, claro, diversas dúvidas. Algumas vou conseguindo tirar e outras não, aí apelo a vocês. Uma coisa me intriga. Para cada tabela no banco de dados, terei que criar uma classe de conexão para inserção, consulta, deleção e atualização? Ou tem como criar uma classe, tipo genérica, e que essa classe possa “falar” com todas as tabelas de meu banco?(lembrando, que cada tabela tem atributos e tipos de dados diferente um do outro, é óbvio)

Você pode utilizar algum framework de persistência, no qual você mapeia seus objetos com as tabelas do banco de dados e as funções CRUD podem ser feitas de forma facilitada.

Os frameworks mais utilizados são: Hibernate e TopLink.

Entendi, mas a minha pergunta é: Tenho que criar uma classe de persistência para cada tabela em meu banco de dados? Essa é a pergunta. Exemplos:
Tenho as seguintes tabelas:
Clientes, fornecedores, Produtos, Vendas, Nota_Fiscal, UF, CEP, Contas_Pagar,Contas_Receber, isso é só um exemplo. Para cada tabela dessas, eu terei de criar uma classe de persistência para cada uma,tipo:

Class ClientesDAO, Class ProdutosDAO e etc…?

Creio que sim, você deve criar uma classe que fabrica as conexões e outras DAO’s para a persistência.