I've done something like this:
Persistence.createEntityManagerFactory("name",
config.getDbProps().buildPersistenceProperties()));
Where DBProps is a simple getter/setter thing. Essentially the createEntityManagerFactory method wants a Map with all the properties required by your JPA provider, hibernate in the case below.
public class DBProps {
private String username;
private String password;
private String dbHost;
private String database;
private DBChoice dblayer = DBChoice.MYSQL;
public Map buildPersistenceProperties() {
final Map ret = new HashMap();
ret.put("hibernate.connection.username", username);
ret.put("hibernate.connection.password", password);
ret.put("hibernate.connection.url", dblayer.getUrl()
+ dbHost + "/" + database);
ret.putAll(dblayer.getAddtlProps());
return ret;
}
public static enum DBChoice {
MYSQL("jdbc:mysql://", new HashMap() {
{
put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
put("hibernate.hbm2ddl.auto", "update");
put("hibernate.c3p0.idle_test_period", "100");
}
});
private DBChoice(final String url, final Map addtl) {
this.addtl = addtl;
this.url = url;
}
public Map getAddtlProps() {
return addtl;
}
public String getUrl() {
return url;
}
private final Map addtl;
private final String url;
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
public String getDbHost() {
return dbHost;
}
public void setDbHost(String dbHost) {
this.dbHost = dbHost;
}
public List<DBChoice> getDblayers() {
return Arrays.asList(DBChoice.values());
}
public DBChoice getDblayer() {
return dblayer;
}
public void setDblayer(final DBChoice dblayer) {
this.dblayer = dblayer;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
[Message sent by forum member 'coding' (coding)]
http://forums.java.net/jive/thread.jspa?messageID=345816