Alguem ai sabe a vantagens e desvantagens do JDBC?
Comparado a quê?
gostaria de saber qual é a vantagens de utilizar o jdbc e se tem alguma desvantagens?
Acredito que para citar vantagens e desvantagens deve ser em um contexto comparativo a outra API.
Mas, tentando adaptar uma resposta a sua pergunta, na minha opinião, JDBC vc JPA:
JDBC:
- Fácil compreensão (mais simples);
- Mais verboso (precisa escrever mais código)
- Menos configurações(praticamente não existe)
- Maior controle(no braço) sobre oque vc quer que seja executado no banco e como deve ser executado.
Acredito que a “vantagem” de se utilizar o JDBC em relação a qualquer outro framework ORM seria no caso de você já ter toda sua lógica de negócio implementada no seu banco de dados (PROCEDURES, FUNCTIONS, PACKAGES, etc…) e apenas realizar a chamada a esses procedimentos na sua aplicação, neste caso acredito que o uso do JDBC seria uma vantagem.
Agora, caso a função do seu banco de dados na sua arquitetura seja unica e exclusivamente guardar os dados, sem nenhuma (ou quase nenhuma) lógica implementada nele, creio que um framework ORM (como Hibernate) seja melhor para evitar o acoplamento da sua aplicação com o banco de dados, gerenciar suas transações e suas conexões com o banco de dados. Sem contar a vantagem principal de um framework ORM ao meu ver, que seria permitir você trabalhar apenas com o modelo orientado a objetos, fazendo com que você não precise se preocupar com o modelo relacional.
Se vai usar Java com banco de dados relacional, JDBC vai ser usado de uma forma ou outra. Existem ferramentas adicionais como o pesado e complexo JPA/Hibernate, para quem quer a todo custo buscar meios para fazer modelos e querys orientadas a objetos e fingir que o banco de dados relacional usado pela aplicação não existe, deixando de usar SQL diretamente. Além disso, como o nome da ferramenta já diz, Hibernar permite uso de cache, lazy loading, etc, um monte de tralhas, que para o tempo das aplicações client/server devia ser uma boa, mas aplicações web/HTTP não faz muito sentido, pois hibernate não vai ter contato direto com o client, o navegador por exemplo precisa receber eficientemente a requisição completa sem lazys (n querys) e usar cache onde a informação já fica, no client, ir no servidor pra pegar cache não faz muito sentido. São vícios de mercado que estão ai até hoje.
Como o colega acima falou, com JDBC puro você programa mais, e com Hibernate configura demais, mapeamentos, etc. Nada impede de criar uma biblioteca leve só para ajudar na programação direta com JDBC em trechos que seriam repetitivos, como por exemplo transformar resultset em objeto, pelo menos em C# isso é muito fácil de fazer com reflection. Ou alternativas existentes. Lógico que sem fugir de SQL caso esteja usando banco de dados relacional, pelo amor de Deus.