ORM(Object Relational Mapping) Nedir?
Merhaba bu yazıda basitçe projelerimizdeki database bağlantısını OOP prensiplerine uygun olarak yönetmeye yarayan ORM kavramından bahsedeceğim. ORM, Object Relational Mapping’in kısaltmasıdır. Türkçe karşılığı ise Google Çeviriye göre “Nesne İlişkisel Eşleme” dir.
Bir database sorgusu hepimizin bildiği gibi aşağıdaki şekildedir.
“ Select * from users where id = 5”
ORM yaklaşımı olmadan yazdığımız bir kodda veritabanına sorgu atmak için yukarıdaki gibi sorguyu yazarak göndermemiz gerekirken, ORM bu işi kendi sınıfları ile ortadan kaldırıyor. Örnekler ile bu daha iyi anlaşılacaktır. Fakat örneklerden önce dillere göre bazı ORM teknolojilerini sıralayalım:
- Java → Hibernate, EntityBeans, JPA, …
- Python → Django
- C# → Entity Framework
Örnekeleyecek olursak projelerimizde yukarıdaki sorgunun çıktısına veritabanımızdan ulaşmak için geleneksel yöntemlerle aşağıdaki gibi bir kod yazmamız gereklidir:
Java:
public User getUser(Connection con, int id) {
User user = new User();
String query = "select * from users where id=" + id;
try {
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(query);
while (rs.next()) {
String name= rs.getString("NAME");
String surName= rs.getString("SURNAME");
int age = rs.getInt("AGE");
//Create user
User user = new User();
user.age = age;
user.id = id;
user.name = name;
user.surName = surName;
users.add(user);
} catch (SQLException e) {
//Handle
}
return user;
}
Basitçe yukarıdaki java metodu, veritabanına bir bağlantı açıp istediğimiz id deki kullanıcıyı döndürüyor. Burada sorgunun ne olduğunu yazarak DB ye gönderiyoruz. Şimdi ise ORM mantığı ile bu işin nasıl çalıştığına bakalım:
Hibernate/Java:
public User getUser(int id){
User user = HibernateUtility.getHibernateSession().get(User.class, id);
return user;
}
ORM yaklaşımı ile yapılmış veritabanı sorgusunun ne kadar basit, okunabilir ve kısa olduğunu görüyoruz. Avantajlarını ise şu şekilde sıralamak mümkün olacaktır:
- Okunabilir, kısa ve basit kod.
- Bazı siber saldırılardan programı korur. Örneğin: SQL Injection
- Programı nesne tabanlı olarak geliştirmeye olanak sağlar.
ORM konusunu da bu şekilde özetlemiş olalım, daha fazla bilgi ve deneyim için projelerinizdeki veritabanı işlemlerini dillere göre tasarlanmış ORM tool larını kullanmanızı tavsiye ederim. Herkese iyi çalışmalar.