China + Jawa + Sunda = Me :)

Konfigurasi Java Persistence API 2 Tanpa Menggunakan XML

Java Programming

Java Programming

Tadi ada yang bertanya, gimana caranya setting koneksi database secara dinamis di JPA, biasanya kan pake XML, dan setelah dibuild projectnya, maka gak bisa diubah lagi secara dinamis. Dia ingin menggunakan koneksi secara dinamis, jadi pengguna bisa menginputkan koneksi manual melalui form.

Ketika JPA versi 1, hal ini tidak dapat dilakukan. JPA 1 masih menggunakan XML untuk melakukan konfigurasinya. Namun sejak versi JPA 2, kita dapat melakukan konfigurasi secara dinamis tanpa menggunakan XML, Caranya?

Pertama biasanya kita Membuat persistence.xml seperti dibawah ini :

<?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="DynamicJPAPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Sekarang hapus bagian konfigurasi koneksi ke database, sehingga menjadi seperti dibawah ini :

<?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="DynamicJPAPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Sekarang, untuk membuat EntityManagerFactory-nya, maka kita perlu menggunakan parameter untuk melakukan koneksi, contohnya dibawah ini :

Map<String, String> map = new HashMap<String, String>();
map.put("javax.persistence.jdbc.url", "jdbc:derby://localhost:1527/sample");
map.put("javax.persistence.jdbc.password", "rahasia");
map.put("javax.persistence.jdbc.driver", "org.apache.derby.jdbc.ClientDriver");
map.put("javax.persistence.jdbc.user", "ekoganteng");

EntityManagerFactory factory = Persistence.createEntityManagerFactory("SamplePU", map);

Dan parameter-parameter tersebut bisa diisi melalui form atau apapun. Selamat mencoba :D

Comments on: "Konfigurasi Java Persistence API 2 Tanpa Menggunakan XML" (5)

  1. sipp2 om… terima kasih pisannn.. pisan… :D /

  2. oooh , ternyata parameter2nya bisa diisi di apapun to,, makasi :D

  3. mas, mau tanya soal Java.
    saya ada masalah pada saat compile source java menggunakan netbeans.
    Exception in thread “main” java.lang.ExceptionInInitializerError
    Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named AferaPU: The following providers:
    oracle.toplink.essentials.PersistenceProvider
    oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
    Returned null to createEntityManagerFactory.

    saya menggunakan fedora. kondisinya, saya sudah setting classpathnya dan saya cek, file persistence-nya pun sudah ada di folder src.
    yang salah dimananya, ya? mohon sekiranya mas bisa kasih langkah2 yang benar (mungkin setting classpath saya yang ngaco… baca manual dari berbagai sumber soalnya).

    thx

  4. kang mau tanya..kalau bikin installer di java kaya gimana..biar si file.a nge extrack ke C..kaya program2 biasanya kang..mungkin bisa di mengerti pertanyaan saya?
    terima kasih sebelumnya

    • pake AdvancedInstaller

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s