Dian Aditya

Penjahit Digital.

EclipseLink vs EclipseLink+Spring

Lagi kurang kerjaan nih, jadi kemarin saya coba-coba membuat EntityManagerFactory yang ada di persistence diinisialisasikan di spring. Untuk ORM-nya saya coba pakai EclipseLink dan database menggunakan MySQL.


Silakan download library di sini


  Untuk lebih jelasnya mari kita langsung terjun ke lapangan. Pertama seperti ORM pada umumnya kita buat Entity class terlebih dahulu.

  1: package nagasakti.entity;
  2:
  3: import java.io.Serializable;
  4:
  5: import javax.persistence.Column;
  6: import javax.persistence.Entity;
  7: import javax.persistence.GeneratedValue;
  8: import javax.persistence.Id;
  9: import javax.persistence.Table;
 10:
 11: @Entity
 12: @Table(name="siswa")
 13: public class Siswa implements Serializable{
 14:     @Id
 15:     @GeneratedValue(generator="system-uuid")
 16:     private String id;
 17:
 18:     @Column(name="name", nullable=false)
 19:     private String name;
 20:
 21:     @Column(name="age", nullable=false)
 22:     private String age;
 23:
 24:     public String getId() {
 25:         return id;
 26:     }
 27:
 28:     public void setId(String id) {
 29:         this.id = id;
 30:     }
 31:
 32:     public String getName() {
 33:         return name;
 34:     }
 35:
 36:     public void setName(String name) {
 37:         this.name = name;
 38:     }
 39:
 40:     public String getAge() {
 41:         return age;
 42:     }
 43:
 44:     public void setAge(String age) {
 45:         this.age = age;
 46:     }
 47: }
 48: 

Kemudian kita buat file konfigurasi persistence-nya. Disinilah yang berbeda, jika biasanya kita gunakan persistence.xml yang ditaruh di src/META-INF kita ganti dengan konfigurasi spring (applicationContext-EclipseLink.xml) yang ditaruh di folder src. Berikut file konfigurasi persistence.xml

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <persistence version="1.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_1_0.xsd">
  3:   <persistence-unit name="EclipseLinkPlusSpringPU" transaction-type="RESOURCE_LOCAL">
  4:     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
  5:     <class>nagasakti.entity.Siswa</class>
  6:     <properties>
  7:       <property name="eclipselink.jdbc.password" value="admin"/>
  8:       <property name="eclipselink.jdbc.user" value="root"/>
  9:       <property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
 10:       <property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/coba_spring"/>
 11:       <property name="eclipselink.ddl-generation" value="create-tables"/>
 12:     </properties>
 13:   </persistence-unit>
 14: </persistence>

Dan inilah file konfigurasi persistence bila menggunakan spring

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <beans xmlns="http://www.springframework.org/schema/beans"
  3:        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4:        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  5:
  6:     <bean name="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  7:         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  8:         <property name="url" value="jdbc:mysql://localhost:3306/coba_spring" />
  9:         <property name="username" value="root" />
 10:         <property name="password" value="admin" />
 11:     </bean>
 12:
 13:     <bean name="provider" class="org.eclipse.persistence.jpa.PersistenceProvider"/>
 14:
 15:     <bean name="myEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
 16:         <property name="persistenceUnitName" value="EclipseLinkPlusSpringPU"/>
 17:         <property name="persistenceProvider" ref="provider"/>
 18:         <property name="jpaProperties">
 19:             <props>
 20:                 <prop key="class">nagasakti.entity.Siswa</prop>
 21:                 <prop key="eclipselink.ddl-generation">create-tables</prop>
 22:             </props>
 23:         </property>
 24:     </bean>
 25: </beans>

Setelah melihat perbedaan di atas sekarang kita lihat lagi perbedaan cara inisialisasi EntityManagerFactory. Jika kita mengambil EntityManagerFactory dari persistence.xml script-nya adalah sebagai berikut.

  1: package nagasakti.crud;
  2:
  3: import javax.persistence.EntityManagerFactory;
  4: import javax.persistence.Persistence;
  5:
  6: public class Main {
  7:
  8:     public static void main(String[] args) {
  9:         EntityManagerFactory emf = Persistence
 10:                 .createEntityManagerFactory("EclipseLinkPlusSpringPU");
 11:     }
 12:
 13: }
 14: 

sedangkan jika mengambil EntityManagerFactory dari applicationContext-EclipseLink.xml seperti di bawah ini

  1: package nagasakti.crud;
  2:
  3: import javax.persistence.EntityManagerFactory;
  4: import org.springframework.context.ApplicationContext;
  5: import org.springframework.context.support.ClassPathXmlApplicationContext;
  6:
  7: public class Main {
  8:     public static void main(String[] args) {
  9:         ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext-EclipseLink.xml");
 10:         EntityManagerFactory emf = (EntityManagerFactory) app.getBean("myEntityManagerFactory");
 11:     }
 12: }
 13: 

Terlihat jika kita menggunakan spring EntityManagerFactory sudah diinisialisasikan di dalam applicationContext-EclipseLink.xml. Dan sedikit catatan jika kita menginginkan file konfigurasi spring di luar folder src maka tinggal mengganti baris ClassPathApplicationContext menjadi FileSystemApplicationContext(::LokasiFile::). Cukup sekian saja cerita tentang kerjaan iseng saya. Jika ada kesempatan lagi saya akan membahas tentang proses CRUD dengan EclipseLink+Spring, tentunya jika saya lagi kurang kerjaan :)

Comments