discorpio,
Respeito a sua opinião contra frameworks prontos, porém aconselho você estudar o Hibernate e ver o poder dos frameworks ORM e como eles facilitam a nossa vida.
Certamente é muito mais fácil persistir um objeto já populado usando simplesmente o método session().save(objeto); do que montar a linguiça de um INSERT INTO…
Na grande maioria dos casos, uma simples classe de DAO genérica (o hibernate tem um exemplo: http://community.jboss.org/wiki/GenericDataAccessObjects) já é o suficiente para toda a aplicação. (existem casos que você precisa fazer um extend dela, mas geralmente isso ocorre quando você precisa de uma query dinamica e complexa).
Agora o mais importante para quem vem do mundo relacional (banco de dados tradicionais e JDBC) é a mudança de paradigma. Com Hibernate ou outro framework ORM, você não pensa mais em TABELAS, CAMPOS, INSERT, DELETE, UPDATE. Você pensa em OBJETOS. Ora, se estamos trabalhando com OO, porque não pensar em objetos na hora de persistir os dados?
Junto com essa quebra de paradigma, conceitos como objetos gerenciados, detached, new, etc é importante de entender. Mas certamente o Hibernate de trás uma produtividade enorme, seja em pequenos software ou até mesmo softwares grandes.
ps: Um caso onde o Hibernate não é total aconselhado é no caso de queries de alto desempenho, nesse quesito o JDBC é melhor. Entretanto nada de impede de criar uma query nativa mesmo usando o Hibernate. Porém na minha experiência prática de alguns anos, quando precisamos de uma query de alto desempenho, nada como montar uma storedprocedure no banco de dados e deixar ele fazer o trabalho pesado. Claro que existe o contra de ficar dependente do banco de dados, por isso tem que avaliar se essa query de alto desempenho realmente é importante ou não.
De resto, bons estudos 