Zaman sekarang banyak banget blog yang ditawarkan dalam bantuk cms seperti blogspot, wordpress dan sebagainya. Akan tetapi ada salah satu tool yang dapat kita gunakan untuk membuat blog tanpa menggunakan cms yaitu Jekyll.

Jekyll merupakan sebuah tool yang disediakan untuk membuat sebuah blog.

Halaman blog pada jekyll dibuat dengan format markdown. Markdown adalah sebuah bentuk file yang biasanya digunakan untuk format penulisan. Markdown ditemukan oleh John Gruber. Jekyll ini menyediakan format penulisan markdown yang nantinya akan di convert ke html. Kita akan memulai membuat blog, berikut adalah tahap - tahapanya.

  • Instalasi ruby, tutorial instalasi ruby jika anda belum melakukan instalasi ruby.
  • Instalasi jekyll
  • Generate sebuah blog dengan jekyll
  • Hosting blog ke github page

Instalasi Jekyll

Instalasi jekyll sangat lah mudah, buka terminal atau tekan ctrl + T lalu jalankan perintah gem install jekyll. Jangan lupa hubungkan ke jaringan internet dan tunggu hingga instalasi selesai.

Generate Blog Dengan Jekyll

Jekyll memiliki fitur scaffolding untuk mengenerate sebuah blog. Jalankan perintah jekyll new NamaBlogAnda, kali ini penulis membuat blog dengan nama BelajarJekyll, sesuaikan dengan nama blog anda. Jika penulisan jalankan maka perintahnya menjadi jekyll new BelajarJekyll. Masuk ke root folder lalu jalankan servernya dengan perintah jekyll serve lalu hit ke browser pada http://127.0.0.1:4000/. Berikut adalah gambar ketika server dijalankan.

Screenshot from 2015-07-27 14:36:26.png

Sekilas telah berjalan dengan baik, oke mari kita custom sedikit dengan cara menambah tulisan atau mengedit tulisan tersebut. Untuk editornya bebas tapi penulis memberi saran agar menggunakan editor atom karena terdapat fitur preview markdown. Jika sudah, maka buka project blognya dengan menggunakan editor atom.

Berikut point penting untuk melakukan konfigurasi pada jekyll.

  • file _config.yml berfungsi sebagai tempat konfigurasi nama blog, user dan sebagainya. Buka dan di dalamnya terdapat tulisan title dengan isian Your awesome title, ganti tulisan tersebut dengan BelajarJekyll lalu restart servernya, lihatlah perubahannya.
  • folder _posts merupakan folder yang berisikan file markdown yang nanti akan di convert ke html. Ada beberapa template yang menggunakan bantuan octopress sehingga mempermudah pembuatan halaman markdown. Untuk template tersebut silahkan anda cari di google.
  • folder _layouts berisi file html yang menjadi format penulisan markdown.
  • folder _includes berisi file html yang merupakan file yang bisa di include ke page lainnya seperti header, footer dan sebagainya.
  • folder _site meruapakan folder yang berisi hasil generate atau build blog.

Buka folder _posts lalu buat sebuah file dengan nama 2015-07-27-belajar-jekyll.markdown. Biasanya filenya akan dibuat sesuai dengan tanggal kapan kita akan melakukan posting sebuah artikel. Kemudian masukkan beberapa kata seperti berikut.

---
layout: post
title:  "Belajar Jekyll"
date:   2015-07-27 14:58:10
categories: jekyll update
---

Hello..., Saya sedang belajar membuat blog dengan jekyll.

Oke jalankan server lagi, lalu lihat perubahannya, akan ada 1 posting dengan judul belajar jekyll. Markdown juga menyediakan sintak highlight jika nantinya kita ingin melakukan posting dengan menggunakan sintak pemrograman. Penulis akan memberi contoh, masukkan sintak berikut ke dalam file yang tadi dibuat tepatnya dibawah tulisan

Hello..., Saya sedang belajar membuat blog dengan jekyll

Kira - kira hasilnya seperti ini.

---
layout: post
title:  "Belajar Jekyll"
date:   2015-07-27 14:58:10
categories: jekyll update
---

Hello..., Saya sedang belajar membuat blog dengan jekyll.

{% highlight java %}

public class BelajarJekyll {
  public static void main(String[]args) {
    System.out.println("Hello..., Belajar Jekyll");
  }
}

{% endhighlight %}

Simpan dan langsung cek di browser maka akan tampil sintak highlight. Berikut adalah list sintak untuk highlight berbagai bahasa pemrograman.

  • Cucumber (‘*.feature’)
  • abap (‘*.abap’)
  • ada (‘.adb’, ‘.ads’, ‘*.ada’)
  • ahk (‘.ahk’, ‘.ahkl’)
  • apacheconf (‘.htaccess’, ‘apache.conf’, ‘apache2.conf’)
  • applescript (‘*.applescript’)
  • as (‘*.as’)
  • as3 (‘*.as’)
  • asy (‘*.asy’)
  • bash (‘.sh’, ‘.ksh’, ‘.bash’, ‘.ebuild’, ‘*.eclass’)
  • bat (‘.bat’, ‘.cmd’)
  • befunge (‘*.befunge’)
  • blitzmax (‘*.bmx’)
  • boo (‘*.boo’)
  • brainfuck (‘.bf’, ‘.b’)
  • c (‘.c’, ‘.h’)
  • cfm (‘.cfm’, ‘.cfml’, ‘*.cfc’)
  • cheetah (‘.tmpl’, ‘.spt’)
  • cl (‘.cl’, ‘.lisp’, ‘*.el’)
  • clojure (‘.clj’, ‘.cljs’)
  • cmake (‘*.cmake’, ‘CMakeLists.txt’)
  • coffeescript (‘*.coffee’)
  • console (‘*.sh-session’)
  • control (‘control’)
  • cpp (‘.cpp’, ‘.hpp’, ‘.c++’, ‘.h++’, ‘.cc’, ‘.hh’, ‘.cxx’, ‘.hxx’, ‘*.pde’)
  • csharp (‘*.cs’)
  • css (‘*.css’)
  • cython (‘.pyx’, ‘.pxd’, ‘*.pxi’)
  • d (‘.d’, ‘.di’)
  • delphi (‘*.pas’)
  • diff (‘.diff’, ‘.patch’)
  • dpatch (‘.dpatch’, ‘.darcspatch’)
  • duel (‘.duel’, ‘.jbst’)
  • dylan (‘.dylan’, ‘.dyl’)
  • erb (‘*.erb’)
  • erl (‘*.erl-sh’)
  • erlang (‘.erl’, ‘.hrl’)
  • evoque (‘*.evoque’)
  • factor (‘*.factor’)
  • felix (‘.flx’, ‘.flxh’)
  • fortran (‘.f’, ‘.f90’)
  • gas (‘.s’, ‘.S’)
  • genshi (‘*.kid’)
  • glsl (‘.vert’, ‘.frag’, ‘*.geo’)
  • gnuplot (‘.plot’, ‘.plt’)
  • go (‘*.go’)
  • groff (‘.(1234567)’, ‘.man’)
  • haml (‘*.haml’)
  • haskell (‘*.hs’)
  • html (‘.html’, ‘.htm’, ‘.xhtml’, ‘.xslt’)
  • hx (‘*.hx’)
  • hybris (‘.hy’, ‘.hyb’)
  • ini (‘.ini’, ‘.cfg’)
  • io (‘*.io’)
  • ioke (‘*.ik’)
  • irc (‘*.weechatlog’)
  • jade (‘*.jade’)
  • java (‘*.java’)
  • js (‘*.js’)
  • jsp (‘*.jsp’)
  • lhs (‘*.lhs’)
  • llvm (‘*.ll’)
  • logtalk (‘*.lgt’)
  • lua (‘.lua’, ‘.wlua’)
  • make (‘.mak’, ‘Makefile’, ‘makefile’, ‘Makefile.’, ‘GNUmakefile’)
  • mako (‘*.mao’)
  • maql (‘*.maql’)
  • mason (‘.mhtml’, ‘.mc’, ‘*.mi’, ‘autohandler’, ‘dhandler’)
  • modelica (‘*.mo’)
  • modula2 (‘.def’, ‘.mod’)
  • moocode (‘*.moo’)
  • mupad (‘*.mu’)
  • mxml (‘*.mxml’)
  • myghty (‘*.myt’, ‘autodelegate’)
  • nasm (‘.asm’, ‘.ASM’)
  • newspeak (‘*.ns2’)
  • objdump (‘*.objdump’)
  • objectivec (‘*.m’)
  • objectivej (‘*.j’)
  • ocaml (‘.ml’, ‘.mli’, ‘.mll’, ‘.mly’)
  • ooc (‘*.ooc’)
  • perl (‘.pl’, ‘.pm’)
  • php (‘.php’, ‘.php(345)’)
  • postscript (‘.ps’, ‘.eps’)
  • pot (‘.pot’, ‘.po’)
  • pov (‘.pov’, ‘.inc’)
  • prolog (‘.prolog’, ‘.pro’, ‘*.pl’)
  • properties (‘*.properties’)
  • protobuf (‘*.proto’)
  • py3tb (‘*.py3tb’)
  • pytb (‘*.pytb’)
  • python (‘.py’, ‘.pyw’, ‘.sc’, ‘SConstruct’, ‘SConscript’, ‘.tac’)
  • rb (‘.rb’, ‘.rbw’, ‘Rakefile’, ‘.rake’, ‘.gemspec’, ‘.rbx’, ‘.duby’)
  • rconsole (‘*.Rout’)
  • rebol (‘.r’, ‘.r3’)
  • redcode (‘*.cw’)
  • rhtml (‘*.rhtml’)
  • rst (‘.rst’, ‘.rest’)
  • sass (‘*.sass’)
  • scala (‘*.scala’)
  • scaml (‘*.scaml’)
  • scheme (‘*.scm’)
  • scss (‘*.scss’)
  • smalltalk (‘*.st’)
  • smarty (‘*.tpl’)
  • sourceslist (‘sources.list’)
  • splus (‘.S’, ‘.R’)
  • sql (‘*.sql’)
  • sqlite3 (‘*.sqlite3-console’)
  • squidconf (‘squid.conf’)
  • ssp (‘*.ssp’)
  • tcl (‘*.tcl’)
  • tcsh (‘.tcsh’, ‘.csh’)
  • tex (‘.tex’, ‘.aux’, ‘*.toc’)
  • text (‘*.txt’)
  • v (‘.v’, ‘.sv’)
  • vala (‘.vala’, ‘.vapi’)
  • vbnet (‘.vb’, ‘.bas’)
  • velocity (‘.vm’, ‘.fhtml’)
  • vim (‘*.vim’, ‘.vimrc’)
  • xml (‘.xml’, ‘.xsl’, ‘.rss’, ‘.xslt’, ‘.xsd’, ‘.wsdl’)
  • xquery (‘.xqy’, ‘.xquery’)
  • xslt (‘.xsl’, ‘.xslt’)
  • yaml (‘.yaml’, ‘.yml’)

cara penggunaanya adalah ganti pada bagian kata java.

{% highlight java %}

{% endhighlight %}

, misalnya kita ingin menggunakan coffeescript maka ganti menjadi

{% highlight coffeescript %}

{% endhighlight %}

lihat aturan diatas dan sesuaikan dengan ektensi masing - masing file.

Hosting blog ke github page

Github page merupakan salah satu hosting gratis. Salah satu kelebihannya adalah kita dapat menggunakan jekyll pada github page tersebut. Bagi yang terbiasa dengan menggunakan version control git maka tidak lah susah untuk melakukan deploy ke github page, tidak seperti melakukan deploy ke open shift yang memerlukan banyak konfigurasi. Untuk melakukan deploy web, anda hanya perlu melakukan.

  • Instalasi dan konfigurasi git. Bagi yang belum melakukannya dapat dilihat pada tutorial Belajar Git.
  • Buat repository baru dengan username akun anda seperti ini username.github.io, contohnya adalah RizkiMufrizal.github.io.
  • clone repository tersebut dan copy semua file jekyll ke project
  • kemudian lakukan add dengan perintah git add --all
  • kemudian lakukan commit dengan perintah git commit -m "Initial Website"
  • dan yang terakhir lakukan push dengan perintah git push origin master

Setelah selesai, anda dapat mengakses web anda pada http://username.github.io/. Demikian tutorial singkat untuk membuat blog dengan menggunakan jekyll dan terima kasih :).

Untuk kerja team sebuah project, kita butuh tool untuk melakukan manajemen project. Dahulu biasanya penulis menggunakan svn untuk version control system (VCS), kali ini kita akan menggunakan teknologi baru dari version control system (VCS) yaitu git.

Version Control System (VCS) adalah sebuah sistem yang dapat mencatat setiap perubahan dari sebuah file sedangkan git merupakan salah satu contoh version control system yang diciptakan oleh linus torvalds yang dulunya digunakan untuk memanajemen project kernel linux.

Oke kita langsung mulai melakukan konfigurasi git pada linux. Berikut tahapan yang harus diperhatikan.

  • Instalasi git dan Buat akun github.
  • Konfigurasi git
  • Buat repository baru dan belajar commit
  • Penjelasan Gitignore

Instalasi Git dan Buat Akun Github

Tambahkan repository PPA pada linux lewat terminal.

sudo add-apt-repository ppa:git-core/ppa

lalu lakukan update

sudo apt-get update

dan terakhir install git

sudo apt-get install git

Instalasi selesai, lalu silahkan bagi yang belum membuat akun, anda dapat melakukan registrasi di Github. Github ini merupakan sebuah sebuah media social bagi developer, disana kita dapat melakukan upload project, berbagi project dan sebagainya.

Konfigurasi Git

Setelah tahap instalasi, selanjutnya kita akan melakukan konfigurasi git. Konfigurasi pertama yaitu melakukan setting global konfigurasi pada git. Jalankan perintah berikut.

git config --global user.name "RizkiMufrizal"
git config --global user.email "mufrizalrizki@gmail.com"
git config --global color.ui true

Jangan lupa sesuaikan dengan identitas anda. Langkah selanjutnya adalah kita akan mengenerate ssh key yang nantinya kita butuhkan untuk di upload ke github. ssh key ini menggunakan algoritma rsa sehingga dia mempunyai public dan private key. Untuk mengenerate ssh tersebut jalankan perintah berikut.

ssh-keygen -t rsa -C "mufrizalrizki@gmail.com"

Oke selanjutnya kita akan melakukan copy dari isi ssh tersebut untuk github. Install terlebih dahulu xclip dengan perintah.

sudo apt-get install xclip

kemudian copy file ssh dengan perintah

xclip -sel clip < ~/.ssh/id_rsa.pub

Login ke akun gihub, lalu pilih menu setting pilih ssh key kemudian tambahkan ssh yang tadi kita copykan.

Kemudian untuk mengecek apakah ssh nya telah berhasil maka lakukan perintah berikut.

ssh -T git@github.com

Jika berhasil maka akan tampil seperti dibawah ini.

Hi Rizki Mufrizal! You've successfully authenticated, but Github does not provide shell access

Buat repository baru dan belajar commit

Untuk membuat repository di gitub, silahkan anda login dan buat sebuah repository. Penulis membuat repository dengan nama Belajar-Git Jika sudah, anda dapat melakukan clone repository atau melakukan remote repository tersebut pada komputer anda.

Melakukan Clone dan commit project

Untuk melakukan clone repsitory sangat gampang. Pada bagian repository yang ada di github terdapat bagian url yang dapat kita copy yaitu ada pada bagian ini.

Screenshot from 2015-07-27 21:06:12.png

Lalu copy dan clone dengan perintah

git clone https://github.com/RizkiMufrizal/Belajar-Git.git

Sesuaikan dengan repository anda. Kemudian buat sebuah file, disini penulis membuat sebuah file dengan nama index.md kemudian masukkan tulisan hello word. Kemudian kita dapat melakukan pengecekan status git dengan perintah git status dan akan muncul.

On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	index.md

nothing added to commit but untracked files present (use "git add" to track)

Menandakan bahwa file tersebut belum di add dan di commit. Lakukan add file tersebut dengan perintah git add index.md kemudian cek status lagi maka akan muncul.

On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   index.md

Tahap selanjutnya lakukan commit dengan perintah git commit -m "Tambah file index.md". Message atau pesan tersebut dapat diganti sesuia dengan keinginan anda. Kemudian upload semua file tersebut ke github dengan cara menggunakan perintah git push origin master, git akan meminta username dan password anda. Jika telah selesai, lihat repository github anda, dan disana telah terdapat file index.md.

Melakukan Remote dan commit project

Untuk melakuakn remote sebuah project tidak jauh berbeda dengan clone sebuah project. Setelah membuat project pada github kemudian anda buat sebuah folder sesuai dengan nama project anda di github. Kemudian masuk ke root project dan lakukan inisialisasi git dengan perintah git init. Tahap selanjutnya anda lakukan remote dengan perintah

git remote add origin https://github.com/RizkiMufrizal/Belajar-Git.git

Setelah selesai, anda download dulu source code yang sudah ada di github dengan perintah git pull origin master maka akan muncul file index.md. Untuk melakukan commit dan push sama seperti perintah sebelumnya.

Penjelasan Gitignore

Gitignore merupakan sebuah file yang berfungsi untuk mendeklarasikan file - file apa saja yang tidak akan di commit. File gitignore biasanya ditulis dengan nama .gitignore, file ini bersifat hidden sehingga untuk menampilkannya, kita harus melakukan perintah ctrl + H. Misalnya jika kita membuat project java dengan menggunakan maven, maka akan muncul folder target yang berisi kompalasi program maka folder tersebut kita daftarkan pada gitignore sehingga tidak akan di commit. Untuk mengetahui file apa saja yang yang di daftarkan pada gitignore untuk setiap bahasa pemrograman, anda dapat melihatnya di repository gitignore.

Sekian tutorial Belajar Git, Semoga bermanfaat dan terima kasih :).

Sebelumnya kita pernah membahas tentang bagaimana instalasi java pada linux. Kali ini penulis akan menjelaskan bagaimana instalasi ruby pada linux.

Ruby adalah bahasa pemrograman dinamis berbasis skrip yang berorientasi obyek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman skrip yang ada di dunia. Ruby ditulis dengan bahasa pemrograman C dengan kemampuan dasar seperti Perl dan Python.

Ruby juga memiliki berbagai framework diantaranya adalah

  • Ruby On Rails (ROR)
  • Sinatra
  • Lotus
  • Padrino
  • Nyny
  • Grape
  • Nancy
  • dan lain - lain

Baiklah untuk melakukan instalasi ruby pada linux, kita menggunakan RVM (ruby version manager). Berikut adalah tahapan untuk melakukan instalasi ruby pada linux.

Sebelum melakukan install public key dengan gpg2, kita harus melakukan instalasi gpg2 dengan perintah

sudo apt install gnupg2 -y

Lalu install public key dengan perintah

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Lalu kita melakukan instalasi ruby yang paling stable dengan perintah

\curl -sSL https://get.rvm.io | bash -s stable --ruby

Kemudian lakukan path pada linux, buka file environment dengan sintak sudo gedit /etc/environment. kemudian masukkan sintak RVM_HOME=/home/rizki/.rvm dan pada bagian PATH masukkan /home/rizki/.rvm/bin, jangan lupa sesuaikan dengan folder anda.

Restart komputer dan cek versi rvm, ruby dan gem dengan perintah

rvm --version
ruby --version
gem --version

Jika anda ingin mengubah versi ruby menjadi versi yang lain, silahkan lakukan perintah berikut untuk mengahapus default ruby yang digunakan.

rvm reset

Kemudian silahkan jalankan perintah berikut untuk memilih ruby yang akan anda gunakan.

rvm alias create default {versi ruby}

berikut adalah contohnya

rvm alias create default 2.3.0

Jika sudah, maka tahap selanjutnya adalah install bundler. Bundler ini sendiri berfungsi untuk mendownload dependency library yang dibutuhkan oleh project kita nantinya. Bedanya bundler dengan gem yaitu gem hanya sebagai penentu dari versi library yang akan kita gunakan sedangkan bundler akan mendownload semua kepentingan dari project dan akan memeriksa apakah sebuah library mempunyai missing dengan library yang lainnya. install bundler dengan perintah.

gem install bundler

kemudian cek versi bundler dengan perintah

bundler --version

Untuk melihat versi ruby yang telah diinstall di pc maka perintahnya

rvm list

jika ingin mengetahui versi release ruby dengan perintah

rvm list known

Untuk menggunakan interpreter ruby dapat dengan menggunakan perintah irb pada terminal. Selanjutnya untuk IDE ruby, penulis menggunakan ruby mine dari produknya jetbrains. Anda dapat menggunakan IDE selain dar ruby mine tapi penulis menyarankan menggunakan ruby mine dikarenakan karena kelangkapan dari fitur ruby mine seperti auto complete, support framework ruby on rails. Download terlebih dahulu di ruby mine. ekstrak pada folder tertentu, beri akses eksekusi pada file rubymine.sh pada folder bin, kemudian jalankan dengan perintah ./rubymine.sh. Secara otomatis IDE tersebut akan membuat shortcut pada linux anda.

Sekian tutorial kali ini dan selamat coding ruby. Terima kasih :).

Setelah melakukan banyak konfigurasi untuk coding java, selanjutnya kita akan belajar tentang framework hibernate. Sebelum kita belajar hibernate, alangkah baiknya kita mengenal terlebih dahulu konsep dari hibernate itu sendiri.

Object Relational Mapping (ORM)

Object Relational Mapping atau lebih sering disebut ORM adalah sebuah konsep dimana sebuah object merupakan representasi dari basis data yang berbasis relational.

Mungkin sedikit bingung dengan pengertian diatas, untuk mempermudah pemahaman, penulis akan memberi contoh berikut.

di dalam basis data yang relational kita mengenal adanya tabel seperti dibawah ini.

Id Barang Nama Barang Jenis Barang Tanggal Kadaluarsa
A001 Rinso Cair 1 Januari 2016
A002 Tango Padat 12 September 2015

dengan menggunakan sintak SQL maka querynya adalah sebagai berikut

create table tb_barang(
    idBarang varchar(150) not null,
    namaBarang varchar(45),
    jenisBarang varchar(10),
    tanggalKadaluarsa date,
    primary key (idBarang)
)

diatas adalah contoh dengan menggunakan basis data relational, maka berikutnya bagaimana kita menghubungkan dengan pemrograman berorientasi objek. Berikut adalah contoh jika kita membuatnya ke dalam pemrograman berorientasi objek.

public class Barang {
  private String idBarang;
  private String namaBarang;
  private String jenisBarang;
  private String tanggalKadaluarsa;

  //getter setter
}

Dapat disimpulkan bahwa sebuah class adalah representasi dari sebuah tabel dan sebuah property atau variabel adanya representasi dari kolom pada basis data. Banyak framework dari berbagai bahasa pemrograman yang telah melakukan implementasi dari konsep ORM ini, diantaranya adalah

  • Hibernate (Java)
  • Spring Data JPA (Java)
  • MyBatis (Java)
  • JPA (Java)
  • Ebean (Java)
  • Waterline (Node jS / Javascript)
  • Ruby On Rails (Ruby)
  • dan lain - lain

Setelah mengenal konsep ORM, selanjutnya kita akan menggunakan framework hibernate.

Generate Project Hibernate

Untuk membuat project hibernate, kita menggunakan maven. Buka terminal lalu jalankan perintah berikut untuk membuat project dengan maven

mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DgroupId=com.rizki.mufrizal.belajarHibernate \
-DartifactId=Belajar-Hibernate

Buka project tersebut dengan menggunakan Intellij IDEA dengan cara melakukan import terhadap project, Penulis menggunakan Intellij IDEA versi 14.1.4. Kemudian buka file pom.xml. File ini berisi konfigurasi project maven. Karena kita membutuhkan library hibernate, maka kita akan mendeklarasikannya di dalam file pom.xml ini, berikut adalah konfigurasinya.

<dependencies>

  <!-- junit -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>

  <!-- hibernate -->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.10.Final</version>
  </dependency>

  <!-- database hsqldb -->
  <dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.3.3</version>
  </dependency>

  <!--slf4j-->
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.12</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.12</version>
  </dependency>

</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
  </plugins>
</build>

Database yang akan kita gunakan adalah hsqldb, database tersebut bersifat embedded artinya dapat dipindahkan ke komputer lain tanpa perlu melakukan banyak konfigurasi. Buatlah sebuah package baru dengan nama domain, pada package ini kita akan memasukkan sebuah class yang berisikan domain - domain yang nantikan akan di mapping oleh hibernate. Pada tutorial kali ini, penulis membuat sebuah class dengan nama Mahasiswa. Jangan lupa untuk membuat getter dan setter dari setiap property.

@Entity
@Table(name = "tb_mahasiswa")
public class Mahasiswa implements Serializable{

    @Id
    @Column(name = "npm", length = 8)
    private String npm;

    @Column(name = "nama", nullable = false, length = 45)
    private String nama;

    @Column(name = "kelas", nullable = false, length = 5)
    private String kelas;

    @Column(name = "jenisKelamin", nullable = false, length = 6)
    @Enumerated(EnumType.STRING)
    private JenisKelamin jenisKelamin;

    @Column(name = "tanggalLahir", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date tanggalLahir;

    //getter setter  

}

Berikut penjelasan singkat tentang annotation tersebut

  • @Entity berfungsi mendeklarasikan bahwa class ini merupakan sebuah class entity yang akan di mapping oleh hibernate.
  • @Table berfungsi untuk mendeklarasikan nama tabel.
  • @Id berfungsi untuk mendeklarasikan bahwa property tersebut merupakan primary key.
  • @Column berfungsi untuk mendeklarasikan definisi dari sebuah kolom.
  • @Enumerated berfungsi untuk mendeklarasikan bahwa field tersebut adalah berisi value yang hanya dapat dipilih.
  • @Temporal berfungsi untuk mendeklarasikan tanggal.

Untuk jenis kelamin, buat sebuah class enum seperti berikut

public enum JenisKelamin {
    PRIA, WANITA
}

Tahap selanjutnya adalah membuat konfigurasi hibernate, buatlah sebuah file hibernate.cfg.xml pada folder resources. Kemudian masukkan konfigurasi seperti dibawah ini

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="hibernate.connection.url">jdbc:hsqldb:databaseHSQLDB/BelajarHibernate</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>

        <mapping class="com.rizki.mufrizal.belajarHibernate.domain.Mahasiswa" />
    </session-factory>
</hibernate-configuration>

berikut penjelasan tentang konfigurasi diatas

  • hibernate.dialect berfungsi untuk mendeklarasikan dialect apa yang akan digunakan, sesuaikan dengan type basis data yang digunakan.
  • hibernate.connection.driver_class berfungsi untuk mendeklarasikan driver yang akan digunakan.
  • hibernate.connection.url berfungsi untuk mendeklarasikan url ke sebuah basis data, nama databasenya adalah BelajarHibernate yang nanti akan dibuat sebuah folder BelajarHibernate pada root project.
  • hibernate.hbm2ddl.auto terdapat beberapa fungsi diantaranya adalah
    • Create : Jika table sudah ada maka semua akan di drop dan dibuat ulang.
    • Update : jika table belum ada maka akan dibuat, jika tabel sudah ada maka hanya dilakukan update.
  • hibernate.show_sql berfungsi untuk menampilkan sintak sql yang dilakukan oleh hibernate.
  • hibernate.format_sql berfungsi untuk melakukan format sql sehingga mudah dibaca.
  • mapping berfungsi untuk melakukan mapping terhadap class yang dituju, class disini berasal dari package entiry yang tadinya kita buat.

Langkah selanjutnya buatlah sebuah package repository dan buat sebuah interface di dalamnya dengan nama MahasiswaRepository. Fungsi repository adalah untuk melakukan query terhadap basis data. Berikut adalah codingan dari interface MahasiswaRepository.

public interface MahasiswaRepository {
    void save(Mahasiswa mahasiswa);
    void update(Mahasiswa mahasiswa);
    void delete(Mahasiswa mahasiswa);
    Mahasiswa getMahasiswa(String npm);
    List<Mahasiswa> getMahasiswas();
}

Kemudian buat sebuah class dengan nama MahasiswaRepositoryImpl di dalam package repository untuk melakukan implementasi interface tersebut. Berikut kodingan untuk class tersebut.

public class MahasiswaRepositoryImpl implements MahasiswaRepository{

    private SessionFactory sessionFactory;
    private static final Logger LOGGER = LoggerFactory.getLogger(MahasiswaRepositoryImpl.class);

    public MahasiswaRepositoryImpl(SessionFactory sessionFactory){
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void save(Mahasiswa mahasiswa){
        Session session = sessionFactory.openSession();

        try {
            session.beginTransaction();
            session.save(mahasiswa);
            session.getTransaction().commit();
            LOGGER.debug("Data Tersimpan");
        }catch (HibernateException e){
            session.getTransaction().rollback();
            LOGGER.error("Error Bung {}", e.getMessage());
        }finally {
            session.close();
            LOGGER.info("Transaction selesai");
        }
    }

    @Override
    public void update(Mahasiswa mahasiswa){
        Session session = sessionFactory.openSession();

        try {
            session.beginTransaction();
            session.update(mahasiswa);
            session.getTransaction().commit();
            LOGGER.debug("Data Di Update");
        }catch (HibernateException e){
            session.getTransaction().rollback();
            LOGGER.error("Error Bung {}", e.getMessage());
        }finally {
            session.close();
            LOGGER.info("Transaction selesai");
        }
    }

    @Override
    public void delete(Mahasiswa mahasiswa){
        Session session = sessionFactory.openSession();

        try {
            session.beginTransaction();
            session.delete(mahasiswa);
            session.getTransaction().commit();
            LOGGER.debug("Data Di Hapus");
        }catch (HibernateException e){
            session.getTransaction().rollback();
            LOGGER.error("Error Bung {}", e.getMessage());
        }finally {
            session.close();
            LOGGER.info("Transaction selesai");
        }
    }

    @Override
    public Mahasiswa getMahasiswa(String npm){
        Session session = sessionFactory.openSession();
        Mahasiswa mahasiswa;

        try {
            session.beginTransaction();
            mahasiswa = (Mahasiswa) session.get(Mahasiswa.class, npm);
            session.getTransaction().commit();
            LOGGER.debug("get mahasiswa");

            return mahasiswa;

        }catch (HibernateException e){
            session.getTransaction().rollback();
            LOGGER.error("Error Bung {}", e.getMessage());
        }finally {
            session.close();
            LOGGER.info("Transaction selesai");
        }

        return null;
    }

    @Override
    public List<Mahasiswa> getMahasiswas(){
        Session session = sessionFactory.openSession();
        List<Mahasiswa> mahasiswas;

        try {
            session.beginTransaction();
            mahasiswas = session.createCriteria(Mahasiswa.class).list();
            session.getTransaction().commit();
            LOGGER.debug("get mahasiswas");

            return mahasiswas;

        }catch (HibernateException e){
            session.getTransaction().rollback();
            LOGGER.error("Error Bung {}", e.getMessage());
        }finally {
            session.close();
            LOGGER.info("Transaction selesai");
        }

        return null;
    }

}

Pada class diatas terdapat beberapa method CRUD diantaranya adalah save, update, delete, get objek dan get semua data. Masing - masing method mempunyai transaction dan juga dilengkapi dengan try catch. Jika kita menggunakan spring maka fungsi transaction tersebut akan dihandle oleh spring. Selanjutnya agar konfigurasi hibernate dapat di load maka buat sebuah class HibernateUtil, berikut adalah konfigurasinya.

public class HibernateUtil {

    private static final SessionFactory sessionFactory;
    private static final MahasiswaRepository MAHASISWA_REPOSITORY;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml)
            // config file.
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
            MAHASISWA_REPOSITORY = new MahasiswaRepositoryImpl(sessionFactory);
        } catch (Throwable ex) {
            // Log the exception.
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static MahasiswaRepository getMahasiswaRepository() {
        return MAHASISWA_REPOSITORY;
    }
}

Dan yang terakhir adalah membuat sebuah main class yang akan berfungsi untuk menjalankan project. Dari generate project maven terdapat sebuah class yaitu App. Gunakan class tersebut untuk main class, dan masukkan codingan berikut ini.

public class App {
    public static void main( String[] args ) throws ParseException {
        MahasiswaRepository mahasiswaRepository = HibernateUtil.getMahasiswaRepository();
        Logger logger = LoggerFactory.getLogger(App.class);

        Mahasiswa mahasiswa = new Mahasiswa();
        mahasiswa.setNpm("58412085");
        mahasiswa.setNama("Rizki Mufrizal");
        mahasiswa.setKelas("3IA04");
        mahasiswa.setJenisKelamin(JenisKelamin.PRIA);
        mahasiswa.setTanggalLahir(new SimpleDateFormat("dd/MM/yyyy").parse("15/11/1993"));

        mahasiswaRepository.save(mahasiswa);

        List<Mahasiswa> mahasiswas = mahasiswaRepository.getMahasiswas();

        for(Mahasiswa mahasiswaData: mahasiswas){
            logger.info("Npm           : {}", mahasiswaData.getNpm());
            logger.info("Nama          : {}", mahasiswaData.getNama());
            logger.info("Kelas         : {}", mahasiswaData.getKelas());
            logger.info("Jenis Kelamin : {}", mahasiswaData.getJenisKelamin());
            logger.info("Tanggal Lahir : {}", mahasiswaData.getTanggalLahir());
        }

        Mahasiswa mahasiswa1 = mahasiswaRepository.getMahasiswa("58412085");
        mahasiswa1.setNama("rizki");

        mahasiswaRepository.update(mahasiswa1);

        mahasiswaRepository.delete(mahasiswa1);

    }
}

akhirnya selesai juga :D . Untuk mempermudah logging aplikasi maka kita menggunakan bantuan SLF4J, buat sebuah file properties dengan nama log4j pada folder resources dengan konfigurasi berikut.

log4j.rootLogger=DEBUG, file, stdout
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.hibernate.type=ALL

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/LogFile.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %C:%L %-5p - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %C:%L %-5p - %m%n

Oke untuk logging aplikasi akan dijelaskan pada postingan sekanjutnya :) . Jika sudah maka jalankan aplikasinya dengan perintah berikut.

mvn compile
mvn exec:java -Dexec.mainClass="com.rizki.mufrizal.belajarHibernate.App"

Jangan lupa sesuaikan dengan package project anda. Sekian tutorial belajar hibernate dan Terima kasih :). Untuk source code lengkap, penulis publish di Belajar Hibernate.

Untuk melakukan coding java, ada beberapa hal yang harus kita lakukan dintaranya adalah

  • Instalasi JDK (Java Development Kit)
  • Instalasi build tool java
  • Instalasi IDE java

Pada tutorial ini, penulis hanya menjelaskan bagaimana instalasi pada sistem operasi linux, penulis mengunakan salah distro linux yaitu ubuntu.

Instalasi OpenJDK

JDK dan JRE yang akan kita gunakan adalah OpenJDK. Beberapa developer sedikit kebingungan untuk menggunakan OpenJDK dikarenakan font yang digunakan pada OpenJDK masih acak - acakan. Untuk mengatasi masalah tersebut, pada artikel ini akan dibahas sedikit bagaimana cara mengatasi masalah font OpenJDK pada ubuntu. Silahkan tambahkan PPA berikut untuk kebutuhan font infinality.

sudo add-apt-repository ppa:no1wantdthisname/ppa

Kemudian lakukan update seperti berikut.

sudo apt update

kemudian lakukan instalasi font infinality seperti berikut.

sudo apt install libfreetype6 fontconfig-infinality

Langkah selanjutnya adalah kita akan mengganti konfigurasi font infinality yang lama dengan perintah berikut.

sudo rm /etc/fonts/conf.avail/52-infinality.conf
sudo ln -s /etc/fonts/infinality/infinality.conf /etc/fonts/conf.avail/52-infinality.conf

Kemudian tambahkan PPA untuk font fix OpenJDK seperti berikut.

sudo add-apt-repository ppa:no1wantdthisname/openjdk-fontfix

Setelah selesai, tambahkan PPA berikut untuk repository OpenJDK.

sudo add-apt-repository ppa:openjdk-r/ppa

Kemudian jalankan perintah berikut untuk instalasi OpenJDK.

sudo apt install openjdk-8-jdk openjdk-8-jre icedtea-8-plugin icedtea-plugin

Instalasi build tool java

Di dalam bahasa pemrograman java ada beberapa build tool diantaranya adalah

Pada tutorial kali ini, kita hanya menggunakan maven sebagai build toolnya, silahkan anda download di Maven dan ekstrak pada sebuah folder.

Instalasi JDK dan build tool telah dilakukan, tahap selanjutnya adalah menambahkan environment variabel sehingga variabel tersebut terbaca pada saat kita menggunakan terminal. buka file environment dengan perintah berikut

sudo gedit /etc/environment

kemudian sisipkan di baris paling atas

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
M2_HOME=/home/rizki/programming/build-tool/apache-maven

ganti isi dari JAVA_HOME dan M2_HOME sesuai dengan folder anda, kemudian pada bagian PATH tambahkan dan jangan lupa sesuaikan dengan folder anda.

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-openjdk-amd64/bin:/home/rizki/programming/build-tool/apache-maven/bin"

kemudian lakukan pengujian dengan menjalankan beberapa perintah berikut

java -version
mvn -version

Instalasi IDE

Terdapat beberapa IDE yang sering digunakan oleh developer java diantaranya adalah

Instalasi NetBeans

Download NetBeans pada NetBeans, lalu beri akses eksekusi dengan perintah chmod a+x netbeans.sh. jalankan dengan perintah ./netbeans maka akan muncul GUI instalasi netbeans.

Instalasi Eclipse

Silahkan download pada Eclipse, ekstrak folder tersebut lalu beri akses eksekusi dengan perintah chmod a+x eclipse.sh. dan jalankan eclipse dengan perintah ./eclipse. Untuk memudahkan, maka buatlah shortcut untuk IDE tersebut.

Instalasi IntelliJ IDEA

Download IDE tersebut pada IntelliJ IDEA, lalu ekstrak pada folder tertentu. Di dalam folder tersebut terdapat folder bin yang di dalamnya terdapat file idea.sh, beri akses eksekusi dengan perintah chmod a+x idea.sh lalu jalankan file tersebut dengan perintah ./idea.sh Secara otomatis IDE tersebut akan membuat shortcut pada linux anda.

Sekian tutorial kali ini dan selamat coding java. Terima kasih :).