Skip to main content

Mengenal Macam-Macam Doctrine Events

Doctrine merupakan PHP library yang digunakan oleh Symfony untuk bekerja dengan database, Doctrine memberikan beberapa event untuk melakukan update pada entitiy selama aplikasi sedang berjalan. Event-event ini dipicu oleh setiap kejadian dalam siklus hidup aplikasi  misal: "update property createdAt saat akan menyimpan data ke database atau update property updateAt saat data di entity diupdate".  

Doctrine akan memicu berbagai event sesaat sebelum atau setelah melakukan tindakan pada entity, misalnya: prePersist/postPersist, preUpdate/postUpdate dan juga pada tugas umum lainnya seperti: Q111.

Ada beberapa cara untuk me "listen" event-event Doctrine tersebut:

  • Lifecycle callbacks, merupakan kumpulan method pada class entity dan mereka akan dipanggil saat events dipicu/dipanggil.  
  • Lifecycle listeners and subscribers, merupakan classes dengan callback methods untuk satu atau lebih event dan mereka dipanggil oleh semua entity.
  • Entity listeners, serupa dengan lifecycle listeners, akan tetapi mereka hanya dipanggil untuk entity dari spesifik class.


Berikut gambaran dari kelebihan masing cara untuk me "listen" event-event Doctrine tersebut:

  • Lifecycle Callback memiliki performa yang lebih baik karena mereka hanya bekerja untuk sebuah class entity, tapi kita tidak bisa mereuse logic yang digunakan pada entity yang lain dan mereka tidak memiliki akses pada Symfony Services.
  • Lifecycle listeners dan subscribers dapat menggunakan ulang logic antara beberapa entity yang berbedadan dapat melakukan akses pada Symfony Service tapi tentunya mereka lebih berat karena dipanggil untuk semua entity.
  • Entity listeners memiliki kemiripan dengan lifecycle listeners tapi memiliki performa yang lebih baik karena hanya jalan pada sebuah entity.
"Pada catatan ini saya hanya membahas dasar-dasar Doctrine Lifecycle Callback yang  berada didalam sebuah aplikasi Symfony. Bila ingin lebih lengkap silahkan baca manual milik Doctrine."
Pada contoh ini saya akan menggunakan contoh menambahkan post_created_at pada Post.php, field ini akan otomatis terisi tanggal pembuatan dari post, berikut ini adalah langkah-langkah yang saya lakukan.

1. Setup Annotation di Class Post.php

Pertama-tama tambahkan annotation @ORM\HasLifecycleCallbacks() pada clas Post.php sebagai berikut.

2. Setup PrePersist() Callback

Kedua buat fungsi ini sebagai callback yang akan mengisi $post_created_at setiap membuat record baru ditable posts.

3. Hapus Manual Set Datetime di Controller

Ketiga, bila sebelumnya kita set berbagai macam date secara manual di Controller maka sekarang kita sudah tidak memerlukannya lagi.

4. Hasil

Bila sekarang kita buat data baru maka akan ada datetime di post_created_at.



Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....