Menggunakan ActiveJDBC Sebagai ORM

ActiveJDBC merupakan salah satu framework dari javalite yang digunakan sebagai ORM (Object-relational mapping). Sebagai sebuah ORM, ActiveJDBC dapat mensupport banyak database yaitu SQLServer, MySQL, Oracle, PostgreSQL, H2, SQLite3, DB2.

Seperti yang sudah dijelaskan pada postingan sebelumnya tentang Mengenal Javalite, bahwa framework yang terdapat pada javalite dapat digunakan atau di integrasikan dengan framework lain, lalu bagaimana menggunakan ActiveJDBC?

Setting library

Untuk menggunakan ActiveJDBC yang pertama kali harus dilakukan yaitu menambahkan library kedalam build tools yang digunakan pada project kita

Maven

<plugin>
  <groupId>org.javalite</groupId>
  <artifactId>activejdbc-instrumentation</artifactId>
  <version1.4.13</version>
  <executions>
    <execution>
      <phase>process-classes</phase>
      <goals>
      	<goal>instrument</goal>
      </goals>
    </execution>
  </executions>
</plugin>

<dependencies>
  <dependency>
    <groupId>org.javalite</groupId>
    <artifactId>activejdbc</artifactId>
    <version>1.4.13</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.34</version>
  </dependency>
</dependencies>

Gradle

buildscript {
  repositories {
  	mavenCentral()
  }
  dependencies {
  	classpath group: 'org.javalite', name: 'activejdbc-gradle-plugin', version: '2.0'
  }
}
apply plugin: 'org.javalite.activejdbc'

dependencies {
  // ActiveJDBC
  compile group: 'org.javalite', name: 'activejdbc-gradle-plugin', version: '2.0'
}

Membuat Model

Untuk membuat sebuah model dapat dilakukan dengan mudah, yaitu dengan membuat sebuah class yang mengextends class Model yang disediakan ActiveJDBC. Dengan mengextends class Model dari ActiveJDBC, class yang kita buat akan secara langsung termapping dengan table yang sudah didefinisikan pada anotasi @Table

@Table(“mst_pegawai”)
Public class Pegawai extends Model {}

Koneksi Database

Untuk koneksi database menggunakan ActiveJDBC cukup dengan memanggil fungsi Base.open dengan parameter driver, url, username dan password database. Seperti contoh berikut

Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/simple", "user","password");

Operasi CRUD

Contoh simple penggunaan ActiveJDBC untuk seleksi data adalah sebagai berikut

List<Pegawai> daftarPegawai = Pegawai.where(“first_name = ?”, “John”);
Pegawai pegawai = daftarPegawai.get(0);

Method where() diatas akan digenerate menjadi sebuah query select * from mst_pegawai where first_name = ‘John’. Untuk menambah record baru atau insert dapat menggunakan cara seperti berikut

Pegawai p = new Pegawai();
p.set(“first_name”, “John”);
p.set(“last_name”, “Doe”);
p.saveIt();

Dengan kode diatas maka akan ditambahkan pegawai baru dengan first_name = John dan last_name = Doe. Untuk melakukan update data, dapat dengan melakukan seleksi pada data yang akan diupdate, lalu update data seperti contoh berikut

Pegawai pegawai = Pegawai.findById(1);
Pegawai.set(“last_name”, “Doe2”);
Pegawai.saveIt();

Sedangkan untuk fungsi delete, dapat dilakukan seperti fungsi update yaitu melakukan seleksi data yang akan didelete lalu panggil fungsi delete()

Pegawai pegawai = Pegawai.findById(1);
pegawai.delete();

Transaction

Fungsi terakhir yang akan penulis jelaskan yaitu transaction. Untuk melakukan transaction dapat memulai dengan memanggil fungsi Base.openTransaction(), untuk melakukan commit dapat memanggil fungsi Base.commitTransaction(), sedangkan untuk melakukan rollback dapat memanggil fungsi Base.rollbackTransaction(). Berikut contoh penggunaan transaction pada ActiveJDBC

try{
    Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/simple", "user","password");
    Base.openTransaction();
    
    Pegawai p = new Pegawai();
    p.set(“first_name”, “John”);
    p.set(“last_name”, “Doe”);
    p.saveIt();
    
    Base.commitTransaction();
}catch(Exception e){
    Base.rollbackTransaction()
}finally{
    Base.close()
}

Mengenal SEO

SEO, SEO, SEO, apa itu SEO? Search Engine Optimization atau biasa disingkat SEO adalah sebuah proses agar sebuah website dapat dikenali oleh search engine seperti google. Tujuan utama dari SEO adalah website muncul pada halaman pertama pada suatu search engine, atau lebih baiknya lagi berada pada halaman pertama dan baris pertama. Dikarenakan SEO adalah sebuah proses, diperlukan langkah agar sebuah website dapat dikenali oleh search engine.

Apakah perlu SEO? Bagi para pengusaha yang websitenya ingin dilihat oleh orang banyak tentunya SEO sangat diperlukan. Sebagai contoh seorang pengusaha sabun memiliki webiste dengan nama sabunx. Agar sabunnya terjual melalui website tentunya website tersebut harus diketahui oleh orang lain. Bagaimana cara orang lain mengetahui website tersebut? tentunya melalui search engine. Orang yang ingin membeli sabun pertama mencari melalui search engine dengan kata kunci misalnya “jual sabun”. Search engine menampilkan list website yang berkaitan dengan kata kunci “jual sabun”. Orang yang ingin membeli sabun pertama kali tentunya akan melihat pada halaman pertama baris pertama. Apa yang terjadi apabila website sabunx yang dimiliki oleh pengusaha tersebut tidak berada pada halaman pertama baris pertama? tentunya produk yang dijual oleh pengusaha tersebut tidak akan laku. Dari contoh tersebut, SEO menjadi hal yang sangat penting bagi suatu website agar selalu muncul ketika seseorang mengetikan suatu kata kunci pada search engine.

Terdapat beberapa cara agar website dapat muncul di halaman pertama pada suatu search engine. Cara tersebut bisa dilakukan dengan cara melakukan perubahan pada halaman website agar search engine dapat mengenali website berdasarkan kata kunci yang dicari oleh pengguna. Perubahan pada halaman website tersebut berada pada bagian nama domain, title tag, meta description tag, kategori dan sub kategori halaman, url, heading, alt dari suatu image, isi halaman (body), tautan external kepada website yang sudah terkemuka.

Selain dengan cara melakukan perubahan pada halaman website, cara lainnya adalah dengan cara melakukan backlink. Backlink adalah menuliskan nama website kepada website lain. Pengusaha sabun memiliki website sabunx.com, lalu nama website tersebut dituliskan kolom komentar pada website terkenal yang berkaitan dengan sabun. Hal tersebutlah yang dinamakan backlink.

Seberapa Besar tingkat SEO Anda? Ada banyak tools yang dapat digunnakan untuk memeriksa seberapa tinggi SEO yang ada pada suatu website misalnya https://neilpatel.com/seo-analyzer/, https://sitechecker.pro/, atau https://seositecheckup.com. Tools-tools tersebut memberikan info mengenai apa yang kurang dari SEO yang sudah diterapkan pada suatu website misalnya kurangnya meta description, atau alt pada suatu gambar. Namun seberapa tinggipun skor SEO pada website pada tools-tools tersebut, tentunya tidak menjanjikan bahwa website tersebut akan ada pada halaman pertama atau baris pertama pada suatu search engine.

Teruslah update website dengan konten yang relevan, sering-sering menggunakan cara backlink agar website menjadi populer agar posisi website berada pada halaman pertama suatu search engine.

Sumber:

http://semseomanagement.com/apa-itu-seo/

https://www.shoutmeloud.com/backlink.html

Perbedaan React Native CLI dan Create React Native App

Pada postingan Membangun Mobile Apps dengan React Native, dijelaskan betapa mudahnya memulai proyek dengan React Native.

$ create-react-native-app my-app

create-react-native-app atau CRNA adalah cara termudah untuk membuat aplikasi React Native baru tanpa menginstal Xcode dan Android Studio.

Karena Anda tidak membuat kode native saat menggunakan CRNA untuk membuat proyek, tidak mungkin menyertakan modul native yang ditulis di Java dan Objetive-C.

Jika melihat struktur folder-nya, Anda tidak menemukan folder android atau ios pada proyek ini.

crna

Sehingga, untuk kebutuhan publish aplikasi ke Play Store atau App Store dan menggukan library yang tidak tersedia, Anda harus melakukan eject pada aplikasi yang dibuat dengan CRNA dengan command berikut:

$ react-native eject

Kelebihan

  • Setting yang mudah
  • Berbagi aplikasi yang masih tahap development melalui QR Code atau link
  • Dapat menggunakan library dasar bawaan Expo
  • Dapat membuat file .apk ataupun .ipa

Kekurangan

  • Tidak dapat menambahkan modul native
  • Tidak dapat menambahkan library yang ditulis dalam Java dan Objetive-C

Lalu, apa ada cara lain untuk membuat aplikasi tanpa melakukan eject? Jawabannya, bisa dengan React Native CLI menggunakan command  berikut:

$ react-native init my-app

Tapi dengan ini, tentu Anda membutuhkan Android Studio dan XCode untuk menjalankan proyek.

Kelebihan

  • Dapat menambahkan modul native yang ditulis dalam Java dan Objetive-C

Kekurangan

  • Membutuhkan Android Studio dan Xcode
  • Tidak dapat mengembangkan aplikasi untuk iOS tanpa Mac

Semua tergantung kebutuhan Anda :D

 

Referensi:

Berkenalan Dengan Javascript Arrow Function

Kali ini kita akan mengenal salah satu fitur Javascript yang ditambahkan sejak EcmaScript 6, yaitu arrow function.

Arrow function adalah sintak penulisan fungsi yang bisa dibilang lebih singkat, menggunakan token baru yaitu “=>”, fungsi yang dideklarasikan menggunakan panah ini bersifat anonim. Mirip lambda arrow operator di bahasa lain. Dengan arrow function kita bisa menulis fungsi tanpa menggunakan kata kunci “function”, “return”, dan kurung kurawal. Oke mari kita langsung saja membahas sedikit.

Sintak banyak parameter:

// ES5
var multiplyES5 = function(x, y) {
  return x * y;
};

// ES6
var multiplyES6 = (x, y) => { return x * y };

console.log(multiplyES6 (2,3));  // 6

Berhubung contoh fungsi multiplyES6 di atas hanya satu ekspresi, maka bisa disingkat lagi:

var multiplyES6 = (x, y) => x * y;

console.log(multiplyES6 (2,3));  // 6

 

Sintak satu parameter:

Jika parameter hanya satu, tidak wajib menggunakan tanda kurung.

//ES5
var phraseSplitterEs5 = function phraseSplitter(phrase) {
  return phrase.split(' ');
};

//ES6

var phraseSplitterEs6 = phrase => phrase.split(" ");

console.log(phraseSplitterEs6("ES6 Awesomeness"));  // ["ES6", "Awesomeness"]

 

Sintak tanpa parameter:

//ES5
var docLogEs5 = function docLog() {
    console.log(document);
};

//ES6
var docLogEs6 = () => { console.log(document); };

docLogEs6(); // #document... <html> ….

 

Sintak returnnya object:

Jika return object, maka harus dibungkus tanda kurung agar bias membedakan antara blok fungsi dengan objek.

//ES5
var setNameIdsEs5 = function setNameIds(id, name) {
  return {
    id: id,
    name: name
  };
};

// ES6
var setNameIdsEs6 = (id, name) => ({ id: id, name: name });

console.log(setNameIdsEs6 (1, "Akhdani"));   // Object {id: 1, name: "Akhdani"}

 

Apakah ada batasan pada arrow function ini?

  1. Arrow function paling baik digunakan untuk fungsi non-method. Perhatikan contoh berikut:
'use strict';
var obj = {
  i: 10,
  b: () => console.log(this.i, this),
  c: function() {
    console.log(this.i, this);
  }
}

obj.b(); // prints undefined, Window {...} (or the global object)
obj.c(); // prints 10, Object {...}

Dari contoh di atas bisa dilihat fungsi b() tidak bisa mengakses properti i, saat mengakses this, ia justru menghasilkan global object.

  1. Arrow function tidak bisa digunakan sebagai konstruktor dan akan terjadi error jika menggunakan new.
var Foo = () => {};
var foo = new Foo(); // TypeError: Foo is not a constructor
  1. Arrow function tidak memiliki objek arguments.
var f = () => arguments[0] + n;
f(2); // Uncaught ReferenceError: arguments is not defined

Arrow function ini bisa digunakan pada javascript higher order function pada postingan saya sebelumnya, silakan coba-coba. :D

Mungkin untuk sementara sekian dulu saja, jika ada tambahan, maka akan saya tambahkan di kemudian hari.

Terima kasih. :)