Boa noite pessoal.
Já pesquisei bastante porém não encontrei uma resposta para a seguinte pergunta:
Como posso ler uma propriedade do arquivo “META-INF/persistence.xml”?
Tenho a seguinte propriedade
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
</properties>
e gostaria de ler o valor de “hibernate.dialect” no código Java, como posso fazer isso?
Obrigado.
Como utilizar/instanciar a interface: javax.persistence.spi.PersistenceUnitInfo?
Voce pode chamar Dialect.getDialect(), que eh um Singleton e retorna o Dialect configurado para sua aplicacao. Isso resolve o problema?
http://simoes.org/docs/hibernate-2.1/api/net/sf/hibernate/dialect/Dialect.html#getDialect()
Se voce realmente precisa pegar o valor da propriedade hibernate.dialect, voce pode usar System.getProperty("hibernate.dialect");
Bom dia…
Muito obrigado pela dica, vou fazer o teste e depois posto aqui se deu certo.
Se algo tão simples funcionar, vou ficar adimirado tanto com a facilidade quanto com o fato de não ter encontrado essa informação facilmente.
Mais uma vez, obrigado.
Fiz o teste mas não funcionou no meu caso, tenho o seguinte trecho de código que funciona como quero:
Properties pro = new Properties();
pro.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
Dialect dialect = Dialect.getDialect(pro);
String select = dialect.getSequenceNextValString(sequenceName);
Porém eu gostaria de deixar dinâmico o valor da propriedade “hibernate.dialect”, pegando direto do arquivo de configuração “persistence.xml”.
Já tentei:
System.getProperty("hibernate.dialect")
e
Dialect dialect = Dialect.getDialect();
porém nenhum deles funcionou.
Se tiverem alguma sugestão, agradeço.
Que estranho. Confirmei ate na documentacao oficial, e isso deveria funcionar 
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/dialect/Dialect.html#Dialect()
Mas em todo caso, tente assim:
Session session = (Session) em.getDelegate();
SessionFactoryImplementor sf = (SessionFactoryImplementor) session.getSessionFactory();
sf.getDialect();
Nao tenho certeza se os casts sao possiveis, pq nao lembro de cabeca qual a implementacao de SessionFactory para JPA, mas acho que eh SessionFactoryImpl.
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/engine/SessionFactoryImplementor.html
Também não deu certo, vou deixar fixo no código e continuar o desenvolvimento, depois vejo isso.
Obrigado pela ajuda.
Abs
Eu testei aqui, e quando se usa JPA as propriedades nao ficam em System.properties. Mas o codigo abaixo funciona:
EntityManager em = factory.createEntityManager();
Session session = (Session) em.getDelegate();
SessionFactoryImplementor sf = (SessionFactoryImplementor) session.getSessionFactory();
logger.info("Dialect usado: " + sf.getDialect());
em.close();
Ele imprime: