Que tal Joseprox, te indico los pasos que realizé en mi aplicación Swing con JPA, lo hice en Netbeans:
1. En la pestaña de Servicios, Databases, drivers, cree una nueva conexion usando Mysql (click derecho -- conecting ussing..).
2. Una vez creada la conexion, en mi proyecto, click derecho, new -> persistent unit, ahi escoges la conexion que acabas de crear en la pestaña de servicios.
3. Una vez creada la unidad de persistencia, se crea el archivo persistence.xml con los parametros de conexión, y cada vez que crees una clase entidad se va a agregar la referencia de esa clase en este archivo persistence.xml. Al final mi archivo persistence.xml quedó de la siguiente manera:
Código XML:
Ver original<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="DefinicionesSmsPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>Entidad.Usuarios</class>
<class>Entidad.Alumnos</class>
<class>Entidad.Nivel</class>
<class>Entidad.Materias</class>
<class>Entidad.Paralelos</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/comunicacion_sms"/>
<property name="javax.persistence.jdbc.password" value="admin"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
</properties>
</persistence-unit>
</persistence>
4. Con esto ya puedes utilizar tu aplicación con JPA, invocando la unidad de persistencia desde tu codigo java:
Código Java:
Ver originalpublic String PU
= "Motor_Emai_y_SMSPU"; EntityManagerFactory emf = Persistence.createEntityManagerFactory(PU);
EntityManager em = emf.createEntityManager();
5. De aquí viene la parte para hacer que la conexión sea dinámica, primero cuando inicio la aplicacion, levanto una ventana que me pide los datos de conexion a la base, y estos datos los guardo en un archivo llamado conexion.conf.
Código Java:
Ver originaltry {
prop.setProperty("servidor", this.jTxtServidor.getText().trim());
prop.setProperty("puerto", this.jTxtPuerto.getText().trim());
prop.setProperty("password", this.jTxtPassword.getText().trim());
prop.setProperty("usuario", this.jTxtUser.getText().trim());
prop.setProperty("base", this.jTxtBase.getText().trim());
prop.store(propOut, "Conexion");
propOut.close();
System.
out.
println(e.
getMessage()); }
6. Una vez que ya tenga el archivo creado, inicio mi aplicacion leyendo el archivo conexion.conf, utilizando sus datos para crear el EntityManagerFactory.
Código Java:
Ver original try {
if (in != null) {
prop.load(in);
if (prop != null) {
String server
= "jdbc:mysql://" + prop.
getProperty("servidor",
"").
trim() + ":" + prop.getProperty("puerto", "").trim() + "/" + prop.getProperty("base", "").trim();
con.put("javax.persistence.jdbc.url", server);
con.put("javax.persistence.jdbc.password", prop.getProperty("password", "").trim());
con.put("javax.persistence.jdbc.user", prop.getProperty("usuario", "").trim());
}
}
private EntityManagerFactory emf; = Persistence.createEntityManagerFactory(PU, prop);
private EntityManager em = emf.createEntityManager();
System.
out.
println(e.
getMessage()); }
7. Con eso ya tienes como hacer que la conexion sea dinamica, obviamente la ventana que guarda los datos de conexion en el archivo conexion.conf, solo se va a ejecutar la primera vez que se inicie la aplicacion que estas desarrollando, o cuando los parámetros que estén guardados sean incorrectos, estas validaciones tenlas presentes al desarrollar tu aplicación, aquí solo te expliqué lo que se necesita para que la conexión sea dinámica.
Espero haberte ayudado, si tienes dudas por favor me comunicas.