Alguma confusão em torno dos resources JDBC Resources e JDBC Connection Glassfish

Estou prestes a fazer uma conexão com meu database e estou usando o EJB e o JPA. Eu comecei recentemente a fazer essas tecnologias, então eu tenho alguns problemas para entender tudo neste ponto 🙂 Eu sei que o persistence.xml é necessário para usar o JPA. É o arquivo onde eu configuro como conectar ao database, que eu conheço. No entanto, parece que existem várias maneiras de fazer isso.

Qual seria a diferença (ou quando devo usar uma alternativa sobre a outra?) De definir propriedades como nome de usuário, database, senha etc. no arquivo persistence.xml e no Glassfish? Vantagens / desvantagens, se houver.

Abaixo da imagem que postei eu tenho JDBC Resources e JDBC Connection Pools. Estou um pouco confuso sobre a terminologia dos dois. Por que não adicionamos propriedades como nome de usuário, database, senha e assim por diante nos Recursos JDBC? Alguém poderia explicar a diferença entre eles e o que eles significam?

Recursos JDBC

Um recurso JDBC (fonte de dados) fornece aos aplicativos um meio de se conectar a um database. Normalmente, o administrador cria um recurso JDBC para cada database acessado pelos aplicativos implementados em um domínio. (No entanto, mais de um recurso JDBC pode ser criado para um database.) Http://download.oracle.com/docs/cd/E19316-01/820-4335/ablih/index.html

Acho estranho adicionarmos essas propriedades ao pool, mas não ao recurso, mas provavelmente não entendi os conceitos.

insira a descrição da imagem aqui

Nos “conjuntos de conexões JDBC”, é possível criar origens de dados JDBC gerenciadas por contêiner (com resources de pool de conexão). A fonte de dados precisa conhecer pelo menos o driver JDBC, o URL JDBC, o nome de usuário e a senha.

Nos “Recursos JDBC”, é possível ligar essas origens de dados JDBC gerenciadas por contêiner a um ou mais nomes JNDI para que eles sejam disponibilizados pelo JNDI para o aplicativo da Web implementado.

No persistence.xml você pode especificar se deve usar uma fonte de dados local ou usar uma fonte de dados gerenciada por contêiner. Se você quiser usar uma origem de dados gerenciada por contêiner, deverá especificar seu nome JNDI. O uso de uma fonte de dados gerenciada por contêiner tem a vantagem de poder compartilhar uma única fonte de dados entre vários aplicativos da web. No caso do JPA, ele também tem a vantagem de poder usar JTA (transactions gerenciadas por contêiner) para que você não precise chamar transaction.begin() , commit() , rollback() etc em cada método.