EJB, Hibernate

Pessoal, estou começando no mundo do mapeamento O/R, e estou com dúvidas sobre algumas definiçoes:

  1. EJB -> Eu só uso o EJB (Entity Beans), qdo eu for trabalhar com JAVA EE? Senão qdo devo usar EJBs (ficou meio confuso para mim)

  2. Hibernate -> Implementa o JPA, correto? o JPA é uma biblioteca estendida do Java 5.0 certo?
    No artigo que li, o autor usava o TopLinkEssentials. Tanto faz eu usar o TopLinkEssentials qto o Hibernate, o propósito deles é o mesmo?

  3. Esses frameworks são usados para facilitar o trabalho, ou eles são indipensáveis?

  4. Acessei o site do hibernte.org, e parece q tem várias versões, qual é a versão q devo utilizar???

Pessoal, aguardo a ajuda de vcs!
Mto Obrigado!

Bem vou tentar te ajudar, mas o tio Google pode responder muitas das tuas dúvidas:

esse link fala dos fundamentos do EJB, da uma lidinha aqui, no final to vai ta safo no assunto:
http://www.mundooo.com.br/php/mooartigos.php?pa=showpage&pid=6

 Tu não procuro aqui no forum, pq antes de ti até o papa teve essa dúvida, dá um pulinho aqui e outro ali e tu já vai saber:
  http://www.guj.com.br/posts/list/59209.java
   http://www.guj.com.br/posts/list/57534.java#303567
 De um certo modo os frameworks existem para facilitar sim o trabalho, no caso do hibernate, ele elimina o trabalho bruto, tedioso relacionado a persistência de aplicativos Java e permite q vc se concentre na suas regras de negocio.resumindo PRODUTIVIDADE, dá pra fazer sem ele ??? dá,  agora se é indispensável depende do ponto de vista de cada um, eu uso e recomendo, escrever codigo sql, tem gente q gosta, mas o hibernate pode te ajudar e muito com isso.
Depende.... aplicações pequenas, não sei se vale mesmo, mas aplicações de médio e grande porte é uma boa , atualmente o q tá  na moda é com anotações, a diferença do tradicional é a eliminação dos xml. Pode ser a ultima versão mesmo.