Apa adalah sebuah ORM, bagaimana cara kerjanya, dan bagaimana saya harus menggunakannya?

Seseorang menyarankan saya menggunakan ORM untuk sebuah proyek yang saya'm merancang, tapi aku'm kesulitan mencari informasi tentang apa itu atau bagaimana cara kerjanya.

Siapa pun dapat memberikan saya penjelasan singkat dari apa yang ORM dan bagaimana cara kerjanya dan bagaimana saya harus memulai menggunakan satu?

Mengomentari pertanyaan (7)

Pendahuluan

Object-Relational Mapping (ORM) adalah sebuah teknik yang memungkinkan anda untuk query dan memanipulasi data dari database menggunakan paradigma berorientasi objek. Ketika berbicara tentang ORM, kebanyakan orang merujuk ke perpustakaan yang mengimplementasikan Pemetaan Objek-Relasional teknik, oleh karena itu kalimat "ORM".

Sebuah ORM perpustakaan adalah benar-benar biasa library yang ditulis dalam bahasa pilihan yang merangkum kode yang dibutuhkan untuk memanipulasi data, sehingga anda don't menggunakan SQL lagi; anda berinteraksi secara langsung dengan objek dalam bahasa yang sama anda're menggunakan.

Sebagai contoh, di sini adalah benar-benar imajiner kasus dengan pseudo bahasa:

Anda memiliki buku kelas, anda ingin mengambil semua buku-buku yang penulis "Linus". Secara manual, anda akan melakukan sesuatu seperti itu:

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

Dengan ORM perpustakaan, itu akan terlihat seperti ini:

book_list = BookTable.query(author="Linus");

Bagian mekanik ini diurus secara otomatis melalui ORM perpustakaan.

Pro dan Kontra

Menggunakan ORM menghemat banyak waktu karena:

  • DRY: Anda menulis model data anda di satu tempat, dan itu's mudah untuk update, memelihara, dan menggunakan kembali kode.
  • Banyak hal yang dilakukan secara otomatis dari database penanganan untuk I18N.
  • Hal ini memaksa anda untuk menulis MVC kode, yang, pada akhirnya, membuat kode anda sedikit lebih bersih.
  • Anda don't harus menulis buruk terbentuk SQL (paling programmer Web benar-benar payah dalam hal itu, karena SQL diperlakukan seperti "sub" bahasa, ketika pada kenyataannya itu's sangat kuat dan kompleks).
  • Sanitasi; menggunakan pernyataan siap atau transaksi semudah memanggil metode.

Menggunakan ORM perpustakaan ini lebih fleksibel karena:

  • Cocok di anda cara alami coding (it's bahasa anda!).
  • Abstrak DB sistem, sehingga anda dapat mengubahnya kapanpun anda inginkan.
  • Model lebih lemah terikat untuk seluruh aplikasi, sehingga anda dapat mengubah atau menggunakannya di tempat lain.
  • Hal ini memungkinkan anda untuk menggunakan OOP kebaikan seperti data warisan tanpa sakit kepala.

Tapi ORM dapat menjadi sakit:

  • Anda harus belajar, dan ORM perpustakaan yang tidak ringan alat-alat;
  • Anda harus mengatur itu. Masalah yang sama.
  • Kinerja yang lebih OK untuk query biasa, tetapi SQL master akan selalu melakukan yang lebih baik dengan sendiri SQL untuk proyek-proyek besar.
  • Abstrak DB. Sementara itu's OK jika anda tahu apa yang's terjadi di balik layar, it's perangkap untuk programmer baru yang dapat menulis sangat serakah pernyataan, seperti hit berat dalam untuk loop.

Cara untuk belajar tentang ORM?

Nah, gunakan salah satu. Mana ORM perpustakaan yang anda pilih, mereka semua menggunakan prinsip yang sama. Ada banyak ORM perpustakaan di sini:

Jika anda ingin mencoba sebuah ORM perpustakaan dalam pemrograman Web, anda'a akan lebih baik menggunakan seluruh kerangka stack seperti:

  • Symfony (PHP, menggunakan Pendorong atau Doktrin).
  • Django (Python, menggunakan internal ORM).

Jangan mencoba untuk menulis anda sendiri ORM, kecuali jika anda mencoba untuk belajar sesuatu. Ini adalah raksasa bagian dari pekerjaan, dan lama mengambil banyak waktu dan bekerja sebelum mereka menjadi dapat diandalkan.

Komentar (3)

siapa pun Dapat memberikan saya penjelasan singkat...

Yakin.

ORM adalah singkatan dari "Objek untuk Pemetaan Relasional" di mana

  • The Obyek bagian adalah salah satu yang anda gunakan dengan bahasa pemrograman ( python dalam kasus ini )

  • The Relasional bagian adalah sebuah Relational Database Manager ( Sistem database yang ) ada jenis lain dari database tapi yang paling populer adalah relasional ( anda tahu tabel, kolom, pk fk dll misalnya Oracle, MySQL, MS-SQL )

  • Dan akhirnya Pemetaan bagian mana yang anda lakukan jembatan antara objek dan tabel anda.

Dalam aplikasi di mana anda don't menggunakan ORM framework anda melakukan ini dengan tangan. Menggunakan ORM framework akan memungkinkan anda mengurangi boilerplate yang diperlukan untuk membuat larutan.

Jadi let's mengatakan anda memiliki objek ini.

 class Employee:
      def __init__( self, name ): 
          self.__name = name

       def getName( self ):
           return self.__name

       #etc.

dan meja

   create table employee(
          name varcar(10),
          -- etc  
    )

Menggunakan ORM framework akan memungkinkan anda untuk memetakan objek itu dengan db merekam otomatis dan menulis sesuatu seperti:

   emp = Employee("Ryan")

   orm.save( emp )

Dan memiliki karyawan yang dimasukkan ke dalam DB.

Ups itu bukan yang singkat tapi saya harap hal ini cukup sederhana untuk menangkap artikel lain anda baca.

Komentar (0)

ORM (Object Relational Mapper) adalah suatu bagian/lapisan dari perangkat lunak yang membantu peta kode Objek untuk database anda.

Beberapa menangani aspek lebih dari yang lain...tapi tujuan adalah untuk mengambil beberapa dari berat Lapisan Data dari pengembang's bahu.

Berikut ini's sebuah klip singkat dari Martin Fowler (Data Mapper):

Pola dari Aplikasi Enterprise Arsitektur Pemeta Data

Komentar (0)

Seperti semua akronim itu's ambigu, tapi saya menganggap mereka berarti object-relational mapper - cara untuk menutupi mata anda dan membuat percaya ada's tidak ada SQL di bawah, melainkan itu's semua benda;-). Tidak benar, tentu saja, dan bukan tanpa masalah -- yang selalu warna-warni Jeff Atwood telah dijelaskan ORM sebagai Vietnam CS;-). Tapi, jika anda tahu sedikit atau tidak ada SQL, dan memiliki cukup sederhana / kecil-skala masalah, mereka dapat menghemat waktu anda!-)

Komentar (0)

Model objek yang bersangkutan dengan berikut tiga konsep Abstraksi Data Enkapsulasi Warisan Model relasional digunakan konsep dasar dari suatu relasi atau tabel. Object-relational mapping (ATAU pemetaan) produk mengintegrasikan objek bahasa pemrograman kapasitas dengan database relasional.

Komentar (0)