Also auch ich waere an Loesungen dieser Art interessiert.
Momentan kenne ich nur folgende (zugegebenermassen etwas unorthodoxe) Loesung (fuer Standalone Anwendungen):
Statt hibernate.connection.url im persistence.xml zu spezifizieren spezifiziere ich:
Code:
<persistence-unit ... transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:/MyDatasource</non-jta-data-source>
<properties>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory"/>
...
Dies erlaubt mir eine Datasource zu verwenden, die ich in meiner Application von Hand initialisiere.
Die Datasource muss dann noch ans JNDI gebunden werden, bevor man die EntityManagerFactory startet.
Auf diese Weise kann ich die Connection URL und User/Passwd zu LaufZeit selber zusammenstellen, z.B.:
Code:
InitialContext jndiCtx = new InitialContext( props );
ComboPooledDataSource datasource = new ComboPooledDataSource(); // C3P0
datasource.setDriverClass("org.hsqldb.jdbcDriver");
datasource.setJdbcUrl("jdbc:hsqldb:hsql://localhost");
datasource.setUser("sa");
datasource.setPassword("");
datasource.setMaxPoolSize(20);
jndiCtx.bind("java:/MyDatasource", datasource);