Hibernate Java için bir ORM kütüphanesidir. EJB2 ye alternatif olarak geliştirilmiştir.
Hibernate framework ile Java nesneleri ile ilişkisel veritabanı arasındaki işlemler üst-seviye fonksiyonlarla gerçekleştirilir.
Java classları ile tablolar arasındaki mapping, bir XML dosya konfigürasyonuyla ya da annotation kullanarak sağlanıyor.
Etiketler
abstraction
Accord Framework
ajax
android
architecture
Array
assets
async task
AsyncTask
authorization
avd
billy joel
button
Classification
collections
component
concurrency
container
data science
database
Decision Tree
Decision Trees
dhcp
distributed
donma
emülatör
encapsulation
exception
express
Feature extraction
Feature Selection
garbage collection
glassfish
google
grafik
güvenlik
hadoop
http
IDE
inheritance
j2ee
jade
java
java.lang
JDBC
jls
JNDI
JSF
jsp
kitap
lib
link
Machine Learning
Marmara Üniversitesi
material design
maven
mongodb
multiple inheritance
nested class
netbeans
network
node.js
NoSQL
oop
Oracle
ORM
pass-by-value
pattern
permission
polymorphism
PrimeFaces
primitive
Project Euler
protocol
R
response
REST
RMI
root
Scala
servlet
Set
sözlük
spring
sqlite
tasarım desenleri
tcp/ip
template
test
thread
tier
toast
tomcat
türk telekom
twitter
UI thread
virtual device
web application
web design
web service
WEKA
wireshark
ORM etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ORM etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
6 Mart 2015 Cuma
ORM nedir?
ORM nedir?
ORM : Object Relational Mapping, nesne yönelimli dillerde yaratılan nesneleri veritabanlarına bağlayan bir sistemdir. Örneğin java dilinde program yazıyor ve yazdığınız programda yaratılan nesneler bir mysql veritabanına kaydediliyor ve oradan geri okunuyor ise işte burada ORM'den faydalanıyorsunuz demektir.
Yani ORM ile nesneler ile bunların veritabanındaki kayıtları birbirine bağlanıyor, ve programınız ile veritabanındaki kayıtlar arasındaki veri alışverişi yönetiliyor.
Java'da en çok kullanılan ORM araçları : Hibernate, Apache OpenJPA, Toplink, EclipseLink, Apache Cayenne, IBatis, Spring JDBC Template.
ORM neden gerekli?
ORM'nin ortaya çıkma sebebi nesne yönelimli programlama ile ilişkisel veritabanlarının mantıkları arasındaki uyuşmazlıktır. Örneğin Java da nesneler yaratıldığında birbirine bağlı nesnelerden oluşan bir grafik yapısı ortaya çıkıyor. Fakat ilişkisel veritabanlarında veriler tablolar halinde, liste mantığıyla tutuluyor. İşte bu uyumzsuzluk sebebiyle arada bir köprüye ihtiyaç duyuluyor. Bu köprüye ORM deniyor. Adı üzerinde nesne ile onun veritabanındaki temsili arasındaki "mapping" işlevini görüyor.Diyelim ki bir Employee classı var:
public class Employee { private int id; private String first_name; private String last_name; private int salary; public Employee() {} public Employee(String fname, String lname, int salary) { this.first_name = fname; this.last_name = lname; this.salary = salary; } public int getId() { return id; } public String getFirstName() { return first_name; } public String getLastName() { return last_name; } public int getSalary() { return salary; } }
Bu Employee classının instance larını veritabanında bir tabloya kaydetmek istiyoruz.
create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );
Bu şekilde tabloyu belirlediğimizi farzedelim.
Bu iki tanımlama birbirinden son derece farklı, hatta uyumsuz. Şöyle ki:
1. Granularity: Bazen bir nesne modelinde veritabanındaki tablo sayısından daha fazla class olabiliyor.
2. Inheritance: Veritabanında kalıtım durumu belirtilmiyor.
3. Identity: Veritabanında eşitlik sadece PK larla belirleniyor. Fakat Javada hem identity (a==b) hem de equality (a.equals(b)) şeklinde eşitlik var.
4. Associations : OO dillerde obje referanslarıyla ilişkiler kurulurken, RDBMSde bir FK sütunu ile ilişki kuruluyor.
5. Navigation: Java ile RDBMSde nesneye erişme yöntemleri çok farklı.
ORM'nin artı ve eksileri nelerdir?
ORM'nin artıları:
1. Nesne yönelimli programlamaya uygundur.
2. Kullanılacak veritabanından bağımsız olarak uygulama yazmayı sağlıyor.
3. SQL ya da JDBC kullanmaya gerek kalmadan, az bir kod yazarak veritabanı kullanan bir uygulama yazabilmemizi sağlıyor.
4. ORM raçları genelde open source yani açık kaynaklı olduğundan ücret ödemeye gerek yok.
5. ORM araçları yazılımcıya kolaylık sağlayacak özellikler sunuyor.
6. ORM araçları için gereken eklentiler her IDE için kolayca bulunabiliyor.
vb.
ORM'nin eksileri:
1. Performansı yetersiz kalabiliyor.
2. İşlemin kontrolü tam olarak yazılımcının elinde değildir.
3. ORM araçlarını kullanmayı öğrenmek için çok zaman harcamak gerekiyor (= steep learning curve).
ORM kullanmamak
ORM kullanmak bir seçenektir, kullanmayabilirsiniz.
Uygulamanızı JDBC ve SQL ile de yazabilirsiniz.
Burada dikkat edilmesi gereken şey şu ki, JDBC ile ortaya çıkan problemleri kendiniz halletmek zorunda olacaksınız. Ayrıca ORM araçlarının sağladığı kolaylıklardan da mahrum kalacaksınız.
Bütün bu şartlar sizin için soru olmayacaksa ORM araçları kullanmasanız da olur.
ORM aracı nasıl seçmeli?
ORM aracı seçerken ismine ya da trend olmasına değil, yapacağımız uygulamanın doğasına göre hareket etmek gerekiyor.
Uygulamanın :
1. Büyüklüğü
2. Performansı
3. Deadline yani teslim tarihine kadar olan süre miktarı
bakmamız gereken ana kriterlerdir.
1. Uygulama büyüklüğü
Eğer yazılan uygulamanın veritabanı ile ilişkisi çok basit seviyede ise, ORM aracı kullanılmayabilir.
Ya da basit bir ORM aracı seçilebilir.
Örneğin Spring JDBC Template, IBatis gibi kullanması, öğrenmesi kolay bir ORM aracı yeterlidir.
Eğer ki büyük çaplı bir uygulama yazılıyorsa mutlaka ORM aracı kullanılmasında fayda var. Çünkü bu araçların sağladığı kolaylıklar mutlaka yardımınıza koşacaktır. Büyük bir uygulama için ORM aracı seçerken de uygulamanın kendi ihtiyaçlarına cevap verecek özellikleri tespit ederek on göre karar vermek doğru olacaktır.
2. Performans konusu
...
Kaydol:
Kayıtlar (Atom)