JPA ou JDBC, como eles são diferentes?

Estou aprendendo Java EE e baixei o eclipse com glassfish para o mesmo. Eu vi alguns exemplos e também li os documentos do Oracle para saber tudo sobre o Java EE 5. A conexão com um banco de dados era muito simples. Eu abri um projeto web dinâmico, criei uma sessão EJB, usei o EntityManager e com os métodos get consegui acessar a tabela de dados armazenados.

Para o meu próximo projeto, criei uma classe simples e acessei algumas tabelas de banco de dados. O primeiro problema que encontrei foi que o atributo PersistenceUnit seria reconhecido apenas por EJB, Servlet etc e não por uma simples classe java. Então eu não pude usar o modo EntityManager (ou posso?)

Me pediram para ir pelo caminho "JDBC". O primeiro problema que encontrei foi obter a conexão com o banco de dados. Parece tudo isso deve ser codificado. Eu tinha um persistence.xml com o qual eu poderia facilmente configurar a conexão da base de dados. Até mesmo configurar um driver para o DB foi fácil. Também não há métodos get / set no JDBC para acessar entidades de tabela.

Como eu entendo o JPA e a persistência em relação ao JDBC? O que foi pensado pela JPA? Por que existem métodos set / get? Alguém pode lançar alguma luz sobre a essência destes dois e quais são os prós / contras sem "jargões"? Por favor, sugira também alguns links. Uma simples pesquisa no google por diferenças de JPA e JDBC me levou a alguns sites cheios de "terminologia" que eu não pude acompanhar :(

questionAnswers(4)

yourAnswerToTheQuestion