Pengertian ORM (Object Relation Mapping) - CRUDPRO

Pengertian ORM (Object Relation Mapping)

Pengertian ORM (Object Relation Mapping)

Sudahkah mengenal dengan ORM?

Saat kalian akan mempelajari backend, yang perlu kalian kenali ialah istilah ORM. Ini sangat penting, karena sebagai pondasi dasar saat sebelum lanjut bertahan lebih dalam kembali.

Apa sih ORM itu?

Pengertian ORM (Object Relation Mapping)

ORM (Objek Relation Mapping) sebagai tehnik yang mengubah satu table jadi sebuah objek yang nantinya mudah untuk dipakai. Objek yang dibikin mempunyai properti yang serupa dengan field — field yang ada di table itu.

ORM memungkinkannya kita lakukan query dan merekayasa data di database memakai objek oriented.

Mengapa sih harus pakai ORM?

Umumnya developer lakukan kekeliruan saat menuliskan query database. Karena ada ketentuan tertentu dalam penulisan syntaxnya. Ini membuat developer kesusahan serta membutuhkan beberapa waktu untuk cuma melakukan query. Karena itu dibutuhkan ORM untuk memudahkan mengakses database tanpa lakukan query sama sekalipun.

Kalau tidak pakai ORM dapat tidak sih?

Dapat lah. Hanya kamu akan kesusahan buat query ke database, itu juga masih satu query, belum juga query yang lain. Apa lagi bila kita develop proyek yang besar, tentu memerlukan waktu yang lama cuma untuk query saja. Jadi jika ada yang memudahkan, mengapa tidak kita gunakan saja?

Bagaimana cara kerjanya?

Karena kita sudah tahu keutamaan pakai ORM, cuss saat ini kita akan ulas bagaimana ORM bekerja. Jadi awalnya, kita perlu mendeskripsikan satu objek. Lantas kita buat field — field pada objek sesuai field — field pada table di database. Misalnya kita akan membuat objek namanya makanan. Field yang dimiliki ialah id, nama, harga. Seterusnya objek itu bisa kita pakai untuk lakukan CRUD tanpa memakai query.

Kelebihan
  1. Ada beberapa feature seperti transactions, connection pooling, migrations, seeds, streams, dan lain-lain.
  2. perintah query mempunyai performa yang lebih bagus, dibanding kita menulisnya lewat cara manual.
  3. Kita menulis mode data cuma di satu tempat, hingga lebih gampang untuk up-date, maintain, dan reuse the kode.
  4. Membuat akses data jadi lebih abstrak(kita bisa menggantinya kapan saja) dan portable.
  5. Memungkinkannya kita manfaatkan OOP (objek oriented programming) secara baik
Kekurangan
  1. Untuk proyek besar, lebih bagus memakai query SQL sendiri.
  2. komposisi awalnya ORM menjadi susah. Karena itu dibutuhkan untuk pelajarinya lebih dulu saat sebelum memakainya.

Contoh implementasi ORM di Node JS

Saat lakukan coding backend, saya kerap memakai node JS. Bila ingin mengetahui mengenai node JS selanjutnya, kemungkinan kita bisa bertemu di artikel selanjutnya Node JS mempunyai ORM yang umumnya saya pakai yaitu Sequelize. Sequelize ialah promise-based ORM Node.js untuk Postgres, MySQL, MariaDB, SQLite, dan Microsoft SQL Server.

Penjelasan selanjutnya di sini.

Cara penggunaannya sebagai berikut :

Install Sequelize dan package yang dibutuhkan

npm install --save sequelize# install package sesuai jenis database yang akan digunakan
npm install --save sqlite3 # sqlite
npm install --save tedious # mssql
npm install --save pg pg-hstore # postgresql
npm install --save mysql2

Koneksi Sequelize ke database

const Sequelize = require(‘sequelize’); 
const sequelize = new Sequelize(
    "nama_database", 
    "username", 
    "password",
     {
       //contoh     
       host: "localhost",
       dialect: "mysql" | "sqlite" | "postgres" | "mssql"    
      }
)
module.exports = sequelize;

Membuat model, misalkan kita menggunakan object Movie

// models/Movie.js
const Sequelize = require("sequelize")
const sequelize = require("../config/db")
 
const Movie = sequelize.define(    
     "movie",   
      {        
        id_movie: {            
          type: Sequelize.INTEGER,
          primaryKey: true,            
          autoIncrement: true        
        },        
        title: {            
          type: Sequelize.STRING(100)        
        },        
        genre: {            
          type: Sequelize.STRING(100)        
        }    
      }, 
      { timestamps: false, tableName: "movie" }
)
module.exports = Movie

Penggunaan model pada controller

// controllers/movieController.js
const Movie = require("../models/Movie")

module.exports = {
  index: function(req, res) {
    Movie.findAll().then(function(rows) {
      res.render("movie/index", { data: rows })
    })
  },

  store: function(req, res) {
    Movie.create(req.body).then(function (rows) {  
       res.json(rows)        
    })
  },

  update: function(req, res) {
    Movie.findByPrimary(req.params.id).then(function(row) {
      row.update(req.body)
      res.redirect("/movie")
    })
  },

  destroy: function(req, res) {
    Movie.findByPrimary(req.params.id).then(function(row) {
      row.destroy()
      res.redirect("/movie")
    })
  }
}

Untuk tipe ORM pada bahasa pemrograman lain, kalian bisa membacanya di wikipedia.

Pada akhirnya,

saya anjurkan untuk mencoba dan melihat langkah kerjanya, tapi orang yang paling kuat ilmunya mengenai database akan memberi performa yang lebih bagus dibanding sistem ORM. Kembali lagi ke kebutuhan, bila kita memang memerlukan query yang tidak begitu rumit, kita bisa menggunakan ORM.