• Tidak ada hasil yang ditemukan

Pemrograman Lanjut (IN316C)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pemrograman Lanjut (IN316C)"

Copied!
63
0
0

Teks penuh

(1)

Pemrograman Lanjut (IN316C)

Dosen Pengampuh :

Radius Tanone, S.Kom., M.Cs Tadonny Vani, S.Kom

Object Relational Mapping (ORM)-2

(2)

Mahasiswa mampu memahami konsep ORM dan menerapkan

dalam program

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

(3)

1. Object-relational mapping (ORM) berfungsi untuk memetakan

entitas menjadi tabel dan atribut menjadi kolom tabel

2. Pemetaan dapat dikategorikan menjadi 4, yaitu :

a) Basic Mapping

b) Relationship Mapping

c) Composition Mapping

d) Inheritance Mapping

(4)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Contoh Entitas

(5)

Hasil Pemetaan

(6)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Anotasi Dasar

 Anotasi dasar berguna untuk meng-customise

tabel, primary key, dan kolom

 Berikutnya kita akan melihat teknik anotasi dasar

yang meliputi :

 Tables

 Primary Keys

 Attributes

 Access Type

 Collection of Basic Types

 Map of Basic Types

(7)

@Table

Anotasi @javax.persistence.Table memungkinkan kita untuk

mengubah nilai default suatu tabel.

Misalnya : kita dapat menentukan NAMA TABEL yang akan

disimpan di database. Apabila anotasi @Table ini dihilangkan,

maka nama tabel akan diambil dari nama ENTITAS.

(8)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

@SecondaryTable &

@SecondaryTables

Kadang-kadang, apabila kita perlu melakukan penyebaran

data ke dalam banyak tabel.

@SecondaryTable berguna untuk menghubungkan tabel

tambahan dengan suatu entitas.

@SecondaryTables (ada „s‟) berguna apabila tabel

tambahannya ada lebih dari satu

(9)

Contoh Penggunaan

SecondaryTable

(10)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Hasil Pemetaan

1 entitas -> 3 Tabel

(11)

PrimaryKey

JPA mewajibkan entitas untuk memiliki suatu identifier yang akan dipetakan menjadi primary key

Primary key dapat berupa simpel atau komposit

Primary key simpel harus berkorespondensi dengan satu atribut dari entitas

@javax.persistence.Id berguna untuk menandai suatu atribut sebagai unique identifier dan dapat berupa salah satu tipe berikut :

 Primitive Java types : byte, int, short, long, char

 Wraooer classes of primitive Java types : Byte, Integer, Short, Long Character

 Arrays of primitive or wrapper types : int[], Integer[], etc.

 Strings, numbers, and dates : java.lang.String, java.math.BigInteger, java.util.Date, java.sql.Date

(12)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Enitas Buku disertai

Generated Identifier

(13)

@Column

Anotasi @javax.persistence.Column berguna untuk mendefinisikan property dari suatu kolom

Dengan menggunakan anotasi ini, kita dapat menentukan NAMA

(14)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Customizing Mapping

for the Book Entity

Contoh : kita mengubah nama kolom „title‟ dan „nbOfPage‟, panjang dari „description‟ serta mengharuskan nilai NOT NULL pada beberapa kolom

(15)

Tabel Book

The updatable and insertable settings default to true, which means that any attribute can be inserted or updated in the database. You can set them to false when you want the persistence provider to ensure that it wil not insert or upadate the data to the table in response to changes in the entity

(16)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

@Temporal

Di dalam kode java, kita dapat menggunakan java.util.Date dan

java.util.Calendar untuk menyimpan dalam bentuk tanggal, jam, atau millisecond

Untuk menspesifikasikan hal ini di dalam ORM, kita dapat menggunakan anotasi @javax.persistence.Temporal

(17)

Contoh : Entitas Customer

dengan 2 atribut @Temporal

(18)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Access Type

Selama ini kita melakukan anotasi pada „atribut‟ entitas

Cara lain adalah dengan memberikan anotasi pada property (getter method). Cara ini sama saja, hanya ada perbedaan pada saat

(19)

Anotasi pada Property

(Getter)

(20)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Collection of Basic Types

Sejak JPA 2.0, kita dapat melakukan anotasi terhadap tipe data collection dengan menggunakan @ElementCollection dan

@CollectionTable

@ElementCollection digunakan untuk memberitahu bahwa atribut bertipe java.util.Collection berisikan tipe data yang lain

@CollectionTable memungkinkan kita untuk meng-customise detail dari tabel collection

(21)

Contoh Entitas Book

memiliki atribut ‘Tag’

„Tag‟

merupakan

collection berisi String

(22)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Tabel yang dihasilkan

Note : apabila @CollectionTable tidak digunakan, maka nama tabel default-nya adalah “BOOK_TAG”

(23)

Map of Basic Types

Pada dasarnya, pemetaan tipe data „Map‟ dapat dilakukan sama halnya seperti pemetaan „Collection‟

Pada Map kita perlu menentukan kolom Key dan Value

Contoh kasus :pada album CD, sebuah track dapat memiliki POSISI (key) dan TITLE (value)

(24)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Contoh entitas CD disertai

tipe data Map

(25)
(26)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

(27)

Materi Lanjutan

Relationship Mapping

Inheritance Mapping

(28)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Relationship Mapping

 Di dalam pemrograman berorientasi objek, kita mengenal adanya asosiasi antar class yang satu dengan class yang lainnya

 Melalui asosiasi ini, suatu objek dapat mengakibatkan objek lain untuk menjalankan suatu fungsi/method

 Ada beberapa jenis asosiasi yang terdapat antar class

 Asosiasi ini memiliki arah : unidirectional (satu arah) atau bidirectional (dua arah)

 Kita mengenal sintaks DOT(.) untuk melakukan navigasi method-method di dalam suatu object

 Contoh : cuscomer.getAddress().getCountry() berarti melakukan navigasi dari object customer ke Address lalu ke Country

(29)

Asosiasi unidirection antar

dua class

 Di dalam UML, untuk merepresentasikan asosiasi unidirectional antar dua class, kita dapat menggunakan tanda panah, sbb :

(30)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Asosiasi bidirectional antar

dua class

 Sedangkan untuk menunjukkan asosiasi bidirectional, kita tidak perlu menggunakan tanda panah sbb :

 Didalam java, hal ini berarti Class1 memiliki atribut bertipe Class2, dan Class2 memiliki atribut bertipe Class1.

(31)

Multiplicity pada asosiasi

class

 Suatu asosiasi dapat juga memiliki multiplicity atau cardinality

 Setiap ujung dari asosiasi dapat menentukan berapa banyak object yang terlibat di dalam asosiasi tsb.

 Contoh berikut : suatu instance Class1 merujuk/refer pada nol atau lebih instance Class2

 Pada UML :

 0..1 berarti kita akan memiliki minimal nol object dan maksimal satu object.  1 berarti kita hanya memiliki satu instance/objeck

 1..” berarti kita hanya memiliki satu atau lebih instance/object  3..6 berarti kita dapat memiliki antara 3 s/d 6 instance/object

 Pada java asosiasi yang menggambarkan lebih dari satu object harus menggunakan salah satu tipe data collection yaitu : java.util.Collection, java.util.Set, java.util.List, atau

(32)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Relationship pada RDBMS

 Berbeda dengan yang terjadi di dunia RDBMS, kita hanya mengenal

adanya kumpulan antar RELATIONAL (disebut : tabel) yang berarti apaun yang kita modelkan di dalam ERD pastilah merupakan suatu tabel.

 Untuk memodelkan asosiasi, kita tidak memiliki LIST, SET, atau MAP, kita hanya memiliki TABEL

 Di dalam java, ketika kita memiliki asosiasi antar satu class dengan class lainnya, maka di dalam database nantinya kita akan memiliki TABLE

REFERERENCE

 REFERENCE ini dapat dimodelkan menjadi dua cara :  Menggunakan FOREIGN KEY (join column)

(33)

Cara 1

Relationship menggunakan JOIN COLUMN

 Sebagai contoh, misalkan seorang CUSTOMER memiliki satu ADDRESS, yang berarti relati one-to-one

 Didalam Java, kita akan memiliki class Customer dengan atribut Address  Di dalam database, kita dapat memiki tabel CUSTOMER yang menunjuk

(34)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Cara 2

Relationship menggunakan JOIN TABLE

 Cara yang kedua adalah menggunakan JOIN TABLE

 Tabel CUSTOMER tidak menyimpan foreign key dari ADDRESS lagi  Kita gunakan tabel tambahan yang dibuat untuk menampung informasi

(35)

Entity Relationship

 Entity relationship dibagi menjadi 4 jenis :  @OneToOne

 @OneToMany  @ManyToOne  @ManyToMany

 Setiap anoasi tersebut dapat digunakan untuk alur unidirectional ataupun bidirectional

(36)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Teknik Pemetaan di Java

 Untuk menyatakan class manakah yang akan menjadi OWNING SIDE dan class mana yang akan menjadi INVERSE SIDE, kita harus menggunakan elemen mappedBy di dalam anotasi @OneToOne, @OneToMany, dan @ManyToMany

 mappedBy ini akan mengidentifikasi atribut yang menjadi pemilik relasi dan wajib digunakan untuk relasi yang bersifat bidirectional.

(37)
(38)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Kasus 1

Asosiasi Unidirectional antara Customer dan Address @OneToOne

 Pada relasi unidirectional, entitas Customer memiliki atribut bertipe Address, sbb :

 Relasi ini bersifat OneToOne dan satu arah dari Customer ke Address  Customer adalah pemilik relasi (OWNER)

 Di dalam database, artinya bahwa tabel CUSTOMER akan memiliki foreign key yang mengacu pada tabel ADDRESS)

(39)

Source Code : Customer dengan satu Address

(40)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Customizing

Entitas Customer menggunakan anotasi

 Kita dapat melakukan customizing juga terhadap mapping, dengan

menggunakan dua buah anotasi yaitu @OneToOne dan @JoinCulomn sbb:

(41)

@OneToMany Unidirectional

 Relasi OneToMany digunakan pada saat satu object dapat mengacu ke banyak objek yang lain

 Misalnya : subuah purchase order dapat terdiri dari beberapa order line  Order adalah sisi “ONE” (source) dan OrderLine adalah sisi “Many” (target)

(42)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Entitas dan Tabel Order berisi OrderLines

(43)

Customizing

Entitas Order menggunakan anotasi JoinTable

(44)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Customizing

Entitas Order menggunakan anotasi JoinColumn

 Aturan default untuk relasi unidirectional OneToMany adalah dengan menggunakan JOIN TABLE, tetapi kita dapat mengubahnya menjadi menggunakan FOREIGN KEY dengan menggunakan anotasi

(45)

Tabel yang dihasilkan @JoinColumn

(46)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Asosiasi bidirectional antara Customer dan Address @ManyToMany

 Pada relasi bidirectional, kita perlu mengubah relasi dengan menambahkan atribut customer ke dalam entitas Address

 Note : pada diagram class UML, atribut yang merepresentasikan relasi tidak ditunjukkan

(47)

Contoh Kasus

@ManyToMany Bidirectional

 Contoh : sebuah Album CD dapat diciptakan oleh beberapa Artist, dan seorang artist dapat muncul dibeberapa Album CD

 Dengan mengambil asumsi bahwa entitas Artist adalah pemilik relasi (Owner), maka berarti CD berarti bertindak sebagai reverse owner dan harus menggunakan elemen mappedBy pada anotasi @ManyToMany

(48)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

One CD is Created by Several Artists

 mappedBy akan memberitahukan engine persistence, bahwa „appearsOnCDs‟ adalah nama atribut dari entitas pemilik.

(49)

Satu artist dapat muncul pada banyak album CD

(50)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

(51)

Fetching Relationship

 Parameter “fetch” sangat penting, karena apabila salah dipergunakan, akan menyebabkan masalah performance di aplikasi ini.

 Setiap anotasi memiliki nilai fetch default yang harus kita waspadi  EAGER akan me-load semua data ke dalam memori sehingga

pengaksesan database nantinya menjadi minimal

 LAZY tidak akan memenuhi memori karena kitalah yang menentukan object mana yang perlu di-load. Namun, dengan teknik ini, kita harus mengakses database setiap saat.

(52)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Ordering Relationship

 Pada relasi OneToMany atau ManyToMany, entitas akan melibatkan collection/sekumpulan object

 Di dalam java, collection ini biasanya bersifat unordered (tdk terurut). Sama halnya dengan RDMBS, record di dalam tabel pun tidaklah terurut

 Untuk itu, apabila kita menginginkan suatu list terurut, maka kita perlu melakukan sorting secaramanual di dalam program atau menggunakan JPQL yang ditambahkan clausa order By.

 JPA memiliki mekanisme yang lebih mudah, yaitu menggunakan anotasi di dalam relasi entitas menggunakan : @OrderBy

(53)

@OrderBy

 Dengan menggunakan anotasi @OrderBy, pengurutan elemen di dalam suatu collection dilakukan pada saat asosiasi entitas diakses :

 Contoh Kasus :

 User dapat menulis News mengenai Musick atau buku  News berisi teks yang ditampilkan di website

 Setelah news dipublikasi, maka user dapat menuliskan komentar  Pada website tersbut, tentu kita perlu menampilkan komentar secara

(54)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

(55)

Inheritance Mapping

Di dunia java, kita mengenal adanya konsep class interitance/turunan JPA memiliki tiga (3) strategi untuk memetakan inheritance

 A single-table-per-class hierarchy strategy : semua atribut dari seluruh entitas yang ada dimasukkan menjadi satu tabel (ini merupakan dafault stategy)

 A joined-subclass stategy : pada cara ini, semua class (abstract maupun concrete) dipetakan menjadi tabel masing-masing.

 A table-per-concrete-class strategy : pada cara ini, setiap entitas concrete ditekan menjadi tabel sendiri.

(56)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Contoh Kasus Inheritance Strategies

 Pada setiap kasus hirarki entitas, pasti ada yang dinamakan entitas ROOT (orang tua)

 Entitas root ini dapat mendefinisikan strategi inheritance dengan menggunakan anotasi @inheritance

 Apabila anoasi ini tidak digunakan, maka strategy default-lah yang akan digunakan (single table per class)

(57)

Entitas CD dan Book, diturunkan dari entitas Item

 Entitas item adalah entitas root dan memiliki identifier, yang akan menjadi primary key, yang akan dirutunkan kepada kedua entitas CD dan Book

(58)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Single Table Strategy Item, Book, & CD

 Strategi ini adalah default apabila kita tidak menggunakan anotasi

@inheritance, dimana semua entitas yang ada akan dipetakan menjadi SATU TABEL saja.

(59)

Tabel yang dihasilkan

 Dengan menggunakan strategy single-table, maka semua entitas akan masuk ke dalam satu tabel dengan nama defaultnya adalah nama dari entitas root, yaitu ITEM

(60)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Joined Strategy

 Pada strategy ini, setiap entitas akan dipetakan menjadi tabel sendiri-sendiri

 Entitas root akan menjadi tabel yang berisikan primary key yang akan digunakan oleh semua tabel turunannya. Selain itu, entitas root ini juga akan mendefinisikan kolom discriminator

 Semua subclass turunan akan menjadi tabel tersendiri yang berisikan atribut-atribut yang dimilikinya, plus primary key yang mengacu pada primary key entitas root

(61)

Entitas item menggnakan Joined Strategy (CD & Book ‘extends to item’ tidak

berubah)

 Note : kolom “DTYPE” adalah kolom discriminator  Kita dapat melakukan customizing nama discrimator

(62)

http://www.uksw.edu Jl. Diponegoro 52-60 Salatiga - Indonesia 50711

Telp 0298-321212 (hunt); E-mail : [email protected]

Tugas Rumah

(63)

Terima Kasih

WebBlog : www.tdvdonny.com

Line/WhatsApp/HP : 0821-5777-4189

Hangouts/Plus Google/E-Mail : [email protected]

YM (Yahoo! Messenger) : [email protected]

Tetap Semangat Untuk Belajar

Salam dari

Gambar

Tabel Book
Tabel yang dihasilkan
Tabel yang dihasilkan
Tabel yang dihasilkan
+3

Referensi

Dokumen terkait

Papilitis adalah pembengkakan diskus yang disebabkan oleh peradangan lokal di nervus saraf optik dan dapat terlihat dengan pemeriksaan funduskopi.. Tipe lokal di

Gereja Jawa Kabluk memiliki desain bangunan dan interior yang sederhana, dan lebih mengedepankan fungsi ruang dibandingkan dengan estetika ruang. Seiring berjalannya

BAB III SUSUNAN PANITIA PEMBUATAN SANITASI ,%-..

Berdasarkan uraian yang telah dijelaskan sebelumnya, maka dapat disimpulkan bahwa bahan ajar berupa buku siswa menggunakan konteks bahan bakar minyak dengan pendekatan

Proses karakterisasi jelaga karbon dilakukan dengan pengujian hambatan, pengujian transparansi, dan pengujian X-Ray Diffraction (XRD). Hasil penelitian menunjukkan bahwa: 1)

Dari analisa di atas dapat disimpulkan bahwa pada dasarnya kantor Kecamatan Bukit Bestari Kota Tanjungpinang sudah diberikan wewenang tentang kebijakan Elektronik Kartu

Pengunjung web ditarik dengan menggunakan game-game baru yang berkualitas dan dari pengunjung-pengunjung tersebut akan melihat iklan yang ada disekitar game yang akan dimainkan,

Indra Tedjakumala, diketahui bahwa jumlah gigi minimum tergantung dari sudut jumlah gigi minimum tergantung dari sudut tegangan [.. tegangan [ 