Callbacks and Listeners

dokumen-dokumen yang mirip
JAVA PERSISTENCE (REVIEW)

Aplikasi komputer selalu terdiri dari: Logika bisnis Interaksi dengan sistem lain Antarmuka dan peyimpanan data (persistence) Data yang diproses di

Object Relational Mapping < ORM > Bagian Pertama

Objek Relational Mapping

Kamus Perintah Hibernate Criteria Query MySQL

Object Relational Mapping < ORM > Bagian Kedua

PEMROGRAMAN BERORIENTASI OBJEK LANJUT BS405

Concurrency P E N G E M B A N G A N A P L I K A S I E N T E R P R I S E

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pertemuan 8. Dasar query basis data dengan SQLite ARFIAN HIDAYAT, S.KOM

Badiyanto, S.Kom., M.Kom. PBO java

BAB III PEMBAHASAN 3.1 Analisa Sistem

Praktikum 07. Penggunaan JSF dan JPA pada aplikasi Web

Mudafiq Riyan Pratama

Praktikum 05. Penggunaan JSF dan JPA pada aplikasi Web

Enterprise Java Beans (EJB)

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

BAB II VARIABEL DAN TIPE DATA

Pemrograman Berorientasi. Class dan Obyek 2

1 TEKNOLOGI OBJECT-RELATIONAL DBMS pada ORACLE 10g

2 TIPE DATA DAN VARIABEL

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

BAB 3 ANALISIS DAN PERANCANGAN. menentukan dan mengungkapkan kebutuhan sistem. Kebutuhan sistem terbagi menjadi

BAB IV TESTING DAN IMPLEMENTASI SISTEM

KapitaSelekta. (KBKI82127, 2 sks) Materi : Pengenalan MySQL

Beyond Java ORM with Versant JPA (Part 1) German Viscuso Developer Relations Manager Versant Corporation March 2012

PRAKTIKUM PL/SQL (Trigger) OLEH : WIRATMOKO YUWONO, ST

Slide 6: Writing Classes

YUPOCOM COMPUTER EDUCATION. JavaScript. 1. Mengenal JavaScript Hal yang harus diketahui Apa itu JavaScript. 2.

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

DASAR PEMOGRAMAN JAVA

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

KOTLIN, SIAPA SUKA. Dasar. P. Tamami BPPKAD Kab. Brebes

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Call Phone Permission pada Android

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

BAB IV DESKRIPSI KERJA PRAKTEK. Pada bab ini akan dibahas mengenai tahap yang dilakukan dalam

DAFTAR ISI ABSTRAK ABSTRACT KATA PENGANTAR

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

ANALISIS DAN PERANCANGAN SISTEM

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Inheritance dan Kata Kunci static

Praktikum Basis Data 14 Structure Query Language 2

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

visit :

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

BAB III ANALISIS DAN PERANCANGAN

Elemen Dasar Dalam Bahasa Java

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Chapter 6 Konsep OOD with Java

BAB IV DISKRIPSI KERJA PRAKTIK. 1. Studi Literatur dan Identifikasi Permasalahan. mengidentifikasi seluruh permasalahan dalam tugas khusus ini.

Bahasa Pemrograman :: Inheritance

Melakukan Operasi Logika

Politeknik Elektronika Negeri Surabaya

Analisa Desain Berorientasi Objek

Pengenalan JavaScript

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Array Sebagai Parameter Method

Firma Firmansyah Adi B. Resume Web Service

PERTEMUAN 2 MODEL DATA MODEL ENTITY RELATIONSHIP ( MODEL E-R)

BAB IV DISKRIPSI KERJA PRAKTIK. 1. Studi Literatur dan Identifikasi Permasalahan. seluruh permasalahan dalam tugas khusus ini.

Percabangan & Perulangan

BAB IV HASIL DAN PEMBAHASAN

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

Menggunakan Database di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

Praktikum Basis Data 2017 TE UM MODUL 8 TRIGGER A. TUJUAN

IMPLEMENTASI PERSISTENCE DENGAN FRAMEWORK HIBERNATE UNTUK MENINGKATKAN EFEKTIFITAS PEMROGRAMAN

Membuat Object Comparable

BAB 4 PENGEMBANGAN SISTEM INFORMASI DALAM PENGAJUAN ANGGARAN BIAYA DALAM RANGKA PENENTUAN TARIF TIKET PT. KALSTAR AVIATION

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

Tutorial Java Desktop 3 Melakukan Pengambilan data pada JavaDB

Eky Pratama Halim [TUTORIAL UNIT TESTING WORLD MART DENGAN VISUAL STUDIO 2010] Langkah-langkah melakukan UNIT TESTING dengan Visual Studio 2010

BAHASA PEMROGRAMAN JAVA

Pertemuan 2 Struktur Kontrol Percabangan

2.1 if Jenis-jenis Percabangan if adalah if, if else, If else if else if - else

Struktur Kontrol Pemrograman Java : PERCABANGAN

PEMAHAMAN DASAR DASAR JAVA

Pemrograman Database Java

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA

Menggunakan Microsoft Access (perhatikan untuk red text)

STMIK AMIKOM YOGYAKARTA YOGYAKARTA 2008 WIDHIARTA, S. KOM

Modul Praktikum 3 Pemograman Berorientasi Objek

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Berikut adalah perancangan algoritma untuk aplikasi penjualan konsinyasi PT Retail Department Store: 4-1.

Modul 6 Function dan Trigger

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

4/11/2013. Topik. Exceptions dan Assertions Pengenalan Pemrograman 2. Topik. Topik EXCEPTIONS. Class Error dan Exception

BAB III ANALISA DAN PERANCANGAN SISTEM

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

BAB II TINJAUAN PUSTAKA

Transkripsi:

Callbacks and Listeners P E N G E M B A N G A N A P L I K A S I E N T E R P R I S E N I K O I B R A H I M F A K U L T A S T E K N O L O G I I N F O R M A S I U N I V E R S I T A S K R I S T E N M A R A N A T H A

Callback & Listener Methods life-cycle callback dan Listener bekerja dengan prinsip yang sama dengan trigger di dalam database. Suatu trigger akan mengeksekusi logika bisnis untuk setiap baris di dalam tabel. Callback dan listener akan dieksekusi untuk setiap instance entity pad saat terjadi suatu event tertentu (sebelum atau sesudah terjadi event) Untuk menentukan waktu eksekusi-nya, kita dapat menggunakan annotations atau XML descriptor, yaitu: Pre dan Post

Callbacks Siklus hidup suatu entitas dapat dibagi ke dalam 4 kategori: persisting, updating, removing, dan loading, yang berkorespondensi dengan operasi database untuk proses: inserting, updating, deleting, and selecting, respectively. Setiap siklus hidup memiliki event Pre dan Post yang dapat dibaca oleh entity manager untuk mengeksekusi fungsi bisnis tertentu.

Life-Cycle Callback Annotations Annotation @PrePersist @PostPersist @PreUpdate @PostUpdate @PreRemove @PostRemove @PostLoad Description Marks a method to be invoked before EntityManager.persist() is executed. Marks a method to be invoked after the entity has been persisted. If the entity autogenerates its primary key (with @GeneratedValue), the value is available in the method. Marks a method to be invoked before a database update operation is performed (calling the entity setters or the EntityManager.merge() method). Marks a method to be invoked after a database update operation is performed. Marks a method to be invoked before EntityManager.remove() is executed. Marks a method to be invoked after the entity has been removed. Marks a method to be invoked after an entity is loaded (with a JPQL query or an EntityManager.find()) or refreshed from the underlying database. There is no @PreLoad annotation, as it doesn t make sense to preload data on an entity that is not built yet.

The Customer Entity with Callback Annotations @Entity public class Customer { @Id @GeneratedValue private Long id; private String firstname; private String lastname; private String email; private String phonenumber; @Temporal(TemporalType.DATE) private Date dateofbirth; @Transient private Integer age; @Temporal(TemporalType.TIMESTAMP) private Date creationdate; Continue

@PrePersist @PreUpdate private void validate() { if (dateofbirth.gettime() > new Date().getTime()) throw new IllegalArgumentException("Invalid date of birth"); if (!phonenumber.startswith("+")) throw new IllegalArgumentException("Invalid phone number"); Continue

@PostLoad @PostPersist @PostUpdate public void calculateage() { if (dateofbirth == null) { age = null; return; Calendar birth = new GregorianCalendar(); birth.settime(dateofbirth); Calendar now = new GregorianCalendar(); now.settime(new Date()); int adjust = 0; if (now.get(gregoriancalendar.day_of_year) - birth.get(gregoriancalendar.day_of_year) < 0) { adjust = -1; age = now.get(gregoriancalendar.year) - birth.get(gregoriancalendar.year) + adjust; // Constructors, getters, setters

Listeners Methods Callback dalam sebuah entitas bermanfaat apabila kita memiliki logika bisnis yang hanya berkaitan dengan entitas tersebut. Entity Listeners digunakan untuk memisahkan logika bisnis ke dalam class tersendiri sehingga dapat di-share dan dimanfaatkan oleh entitas yang lain. Untuk meregistrasi sebuah listener, entitas perlu ditambahkan annotation @EntityListeners.

A Listener Calculating the Customer s Age public class AgeCalculationListener { @PostLoad @PostPersist @PostUpdate public void calculateage(customer customer) { if (customer.getdateofbirth() == null) { customer.setage(null); return; Calendar birth = new GregorianCalendar(); birth.settime(customer.getdateofbirth()); Calendar now = new GregorianCalendar(); now.settime(new Date()); int adjust = 0; if (now.get(gregoriancalendar.day_of_year) - birth.get(gregoriancalendar.day_of_year) < 0) { adjust = -1; customer.setage(now.get(gregoriancalendar.year) - birth.get(gregoriancalendar.year) + adjust);

A Listener Validating the Customer s Attributes public class DataValidationListener { @PrePersist @PreUpdate private void validate(customer customer) { if (dateofbirth.gettime() > new Date().getTime()) throw new IllegalArgumentException("Invalid date of birth"); if (!phonenumber.startswith("+")) throw new IllegalArgumentException("Invalid phone number");

The Customer Entity Defining Two Listeners @EntityListeners({DataValidationListener.class, AgeCalculationListener.class) @Entity public class Customer { @Id @GeneratedValue private Long id; private String firstname; private String lastname; private String email; private String phonenumber; @Temporal(TemporalType.DATE) private Date dateofbirth; @Transient private Integer age; @Temporal(TemporalType.TIMESTAMP) private Date creationdate; // Constructors, getters, setters

Tutorial Program: Callback Methods Buatlah sebuah project baru Java Application (bukan web) Aplikasi ini bertujuan untuk mendemonstrasikan Callback di dalam JPA Ikuti langkah berikut: Buatlah entity class Customer (slide 5) Tambahkan method calculateage dan validate pada entity class tersebut Buatlah sebuah main class untuk mendemonstrasikan input data customer, proses validasi, dan proses perhitungan usia customer ybs. Selamat Mengerjakan