ORM tool (aracı), veri oluşturma, veri değiştirme ve veri erişimini basitleştirir. Veritabanı üzerinde saklanan verilere nesne eşleyen bir programlama tekniğidir.
ORM tool, veritabanıyla etkileşim kurmak için JDBC API kullanır.
Java Persistence API (JPA), ORM araçlarına (tools) belirli fonksiyonellik ve standart sağlayan bir Java spesifikasyonudur. javax.persistence paketi, JPA sınıfları ve arayüzlerini içerir.
Hibernate framework’u LGPL lisansı altında açık kaynak kodludur ve hafiftir.
Hibernate Framework’nun performansı hızlıdır çünkü cache (önbellek) kullanılır. Hibernate Framework’te iki tür cache vardır: İlk Seviye Cache ve İkinci Seviye Cache. İlk Seviye Cache varsayılan olarak gelmektedir.
HQL (Hibernate Query Language (Hibernate Sorgu Dili)) SQL’in nesne yönelimli bir versiyonudur. Veritabanından bağımsız sorgular üretir. Böylece, veritabanına özgü sorgular yazmanıza gerek yoktur. Hibernate’den önce, proje için veritabanı değiştirilirse, bakım problemlerine yol açan SQL sorgusunu da değiştirmemiz gerekir.
Hibernate Framework, veritabanı tablolarını otomatik olarak oluşturmak için kolaylık sağlar. Bu yüzden, veritabanındaki tabloları manuel olarak eklenmesine gerek yoktur.
Hibernate Framework’te birçok tablodan veri çekmek, kolaydır.
Hibernate, sorgu önbelleğini (cache) destekler ve sorgu ve veritabanı durumu hakkında istatistikler sağlar.
Kaynaklar
The post Hibernate Nedir? Hibernate Framework Avantajları – Java Dersleri first appeared on Kampüs Kod.]]>Erişim düzey belirleyiciler, diğer sınıfların belirli bir alanı kullanıp kullanmayacağını veya belirli bir yöntemi çağırıp çağıramayacağını belirler. Erişim kontrolünün iki seviyesi vardır:
//no explicit modifier: Anlamı paket erişimidir. Basitçe açıklarsak, oluşturduğunuz herhangi bir sınıfla aynı paketi paylaşan bir sınıf metotlarınızı görebilir veya kullanabilir. Üst sınıfla aynı pakette olmadıkça alt sınıflar metotlarınızı göremez veya kullanamaz.
Bir sınıf, public belirleyicisiyle bildirilebilir, bu durumda bu sınıf, her yerdeki tüm sınıflarda görülebilir. Bir sınıfın belirleyicisi yoksa (varsayılan (default), package-private olarakta bilinir), o sadece kendi paketinin içinde görünürdür. (paketler ilişkili sınıfların grupları olarak isimlendirilir – sonraki bir derste bunları öğreneceksiniz.)
Üye seviyesinde, ayrıca public belirleyici kullanabilirsiniz veya üst seviye sınıflarda olduğu gibi ve aynı anlama gelen belirleyicisiz (package-private) kullabilirsiniz. Açıklamak gerekirse; belirleyicisiz dediğimiz herhangi bir erişim belirleyici kullanmamaktır. Eğer ki bir erişim belirleyici kullanmazsanız, sadece kendi paket içinde görünür. Üyeler için, ek iki erişim belirleyici vardır: private ve protected. Private belirleyici, üyeye sadece kendi sınıfı içinde erişilebileceğini belirtir. Protected belirleyici, üyeye sadece kendi paketi içinde (package-private ‘da olduğu gibi) ve ek olarak başka paketteki onun sınıfının bir alt sınıfı tarafından erişilebileceğini belirtir.
Aşağıdaki tablo her belirleyici tarafından izin verdiği üyelere erişim gösterilmektedir.
Modifier (Belirleyici) | Class (Sınıf) | Package (Paket) | Subclass (Alt sınıf) | World (Tüm Proje) |
public | Evet | Evet | Evet | Evet |
protected | Evet | Evet | Evet | Hayır |
no modifier | Evet | Evet | Hayır | Hayır |
private | Evet | Hayır | Hayır | Hayır |
İlk veri sütunu, sınıfın kendisinin erişim seviyesi tarafından tanımlanan üyeye erişimi olup olmadığını gösterir. Gördüğünüz gibi, bir sınıfın her zaman kendi üyelerine erişimi vardır. İkinci sütun, sınıfla benzer paketteki sınıfların (ebeveynliklerini dikkate almadan) üyeye erişimi olup olmadığını gösterir. Üçüncü sütun, bu paketin dışında bildirilen sınıfın alt sınıflarının üyeye erişimi olup olmadığını gösterir. Dördüncü sütun, tüm sınıfların üyeye erişimi olup olmadığını gösterir.
Erişim seviyeleri iyi şekilde sizi etkiler. Birincisi, başka bir kaynaktan gelen sınıfları kullandığınızda, örneğin Java platformundaki sınıflar, erişim seviyeleri kendi sınıflarınızın hangi üyelerini kullanabileceğini belirler. İkincisi, bir sınıf yazdığınızda, sınıfınızdaki her üye değişkenin ve her metotun hangi erişim seviyesine sahip olması gerektiğine karar vermeniz gerekir.
Bir sınıf koleksiyonuna bakalım ve erişim seviyelerinin görünürlüğü nasıl etkilediğini görelim. Aşağıdaki şekil bu örnekteki 4 sınıfı ve ilişkilerinin nasıl olduğunu gösterir.
Aşağıdaki tablo, Alpha sınıfının üyelerinin, kendilerine uygulanabilen erişim belirleyicilerin her birisi için nerede göründüklerini gösterir.
Modifier (Belirleyici) | Alpha | Beta | Alphasub | Gamma |
public | Evet | Evet | Evet | Evet |
protected | Evet | Evet | Evet | Hayır |
no modifier | Evet | Evet | Hayır | Hayır |
private | Evet | Hayır | Hayır | Hayır |
Bir Erişim Seviyesi Seçme İpuçları
Başka programcılar sizin sınıfınızı kullanırsa, yanlış kullanımdan meydana gelen hataların oluşmamasını sağlamak istersiniz. Erişim seviyeleri bunu yapmak için size yardım edebilir.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Java Erişim Belirleyiciler (Access Modifier) – Java Dersleri first appeared on Kampüs Kod.]]>Servletler, bir Web veya uygulama sunucusu üzerinde çalışan ve bir Web tarayıcısından veya başka bir HTTP istemcisinden gelen istekler ile HTTP sunucusu üzerindeki veritabanları veya uygulamalar arasında orta bir katman gibi davranan programlardır. (Çok karmaşık gelmiş olabilir bu tanım, şekil ile açıklayalım )
Servlet, dinamik bir web uygulaması oluşturmak için sunucu (server) üzerinde uygulamayı çalıştıran bir web bileşenidir. Servlet bir Java sınıfıdır.
Servetler, büyük ölçekli geliştirme projelerini destekleyen Java sınıf kütüphanelerinin genişletilmiş bir versiyonu olan Java Enterprise Edition’un (Kurumsal Sürüm) standart bir parçası olan javax.servlet ve javax.servlet.http paketleri kullanılarak oluşturulabilir.
init() moetotu sadece bir kez çağrılır. Sadece servlet oluşturulduğunda init() metotu çağrılır ve daha sonra herhangi bir kullanıcı istekleri için çağrılmaz.
Servlet normalde bir kullanıcı servlet’e karşılık gelen bir URL’i ilk kez çağırdığında oluşturulur ancak, sunucu ilk başlatıldığında servlet yüklenmesini dahi belirtebilirsiniz.
init() metot imzası:
public void init() throws ServletException {
// Initialization code...
}
Service metotu, asıl görevleri gerçekleştirmek için ana metottur. Servlet konteyneri, istemciden(tarayıcılardan) genlen istekleri karşılamak ve istemciye yanıt dönmek için service() metotunu çağırır.
Service metotu, HTTP istek tipini (GET, POST, PUT, DELETE vb.) kontrol eder ve doGet, doPost, doPut, doDelete gibi metotları uygun şekilde çağırır.
service metot imzası:
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
}
Bir GET isteği, normal bir URL isteğinden veya tanımlanmış metotu olmayan bir HTML formundan kaynaklanır ve doGet() metotu tarafından karşılanmalıdır.
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
Bir POST isteği, metot olarak POST alan bir HTML formundan kaynaklanır ve doPost() metotu tarafından karşılanmalıdır.
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
Destroy metotu, servletin yaşam döngüsünün en sonunda sadece bir kez çağrılır. Bu metot, veritabanı bağlantılarını kapatmak, arka plandaki threadleri durdurmak vb. işleri yapmak için servlet’e bir şans verir.
Destroy metotu çağrıldıktan sonra, servlet nesnesi çöp toplama (garbage collection) için işaretlenir.
destroy metotu tanımlaması:
public void destroy() {
// Finalization code...
}
Yararlandığım Kaynaklar
https://www.tutorialspoint.com/servlets/index.htm
https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html
The post Java Servlet Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>Java Platformu, kendi uygulamalarınızda kullanmak için uygun çok büyük bir sınıf kütüphanesi (bir dizi paket) sağlar. Bu kütüphane “Application Programming Interface” veya kısaca “API” olarak bilinir. Onun paketleri, genel amaçlı programlama (general-purpose programming) ile en yaygın ilişkilendirilmiş (associated) görevleri temsil eder. Örneğin, bir String objesi (nesne) karakter stringler için durum ve davranış içerir, bir File (dosya) objesi, dosya sistemi üzerinde bir dosyayı kolayca oluşturmak, silmek, incelemek, karşılaştırmak veya değiştirmek için programcıya izin verir, bir Socket objesi, ağ soketlerinin oluşturulması ve kullanılması için izin verir, çeşitli GUI objeleri, butonları ve onay kutularını (checkboxes) ve grafiksel kullanıcı arayüzleri ilgili başka herhangi bir şeyi kontrol eder. Kelimenin tam anlamıyla seçim yapabileceğiniz binlerce sınıf vardır. Bu, programcının çalışmasını sağlamak için gereken altyapıdan ziyade belli uygulamanızın tasarımı üzerine odaklanmanıza imkan verir.
Java Platformu API Şartnamesi/Beyannamesi/Tanımlaması Java SE platformu tarafından sağlanan bütün paketler (packages), arayüzler (interfaces), sınıflar (classes), alanlar (fields) ve metotlar (methods) için bütün listeyi içerir. Tarayıcınıza sayfayı yükleyin ve onu yer imleyin. Bir programcı olarak, Java Platformu API Şartnamesi en önemli tek referans dokümanınız olacaktır.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Java Paket Nedir? Java Package Yapısı – Java Dersleri first appeared on Kampüs Kod.]]>Interface’in en yaygın hali, bir interface, boş gövdelerle birlikte ilgili metotların bir grubudur. Bir bisikletin davranışı, bir interface (arayüz) gibi belirtildiyse, aşağıdaki gibi görünür;
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
Bu interface’i uygulamak için, sınıfınızın adı değişecekti (örneğin, ACMEBicycle gibi belirli bir bisiklet markasına) ve class (sınıf) tanımlamasında “implements” anahtar kelimesini kullanırsınız.
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.
//Derleyici şimdi changeCadence, changeGear, speedUp, and applyBrakes metotlarının
//uygulanmasını zorunlu tutacaktır. Eğer şu metotlar, bu sınıftan eksikse, derleyici başarız olur.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
Bir interface’ın uygulanması, bir sınıfın sağlamayı söz verdiği davranış hakkında daha düzgün / kurallara göre olmasını sağlar. Interfaceler, sınıf ve dış dünya arasında bir anlaşma oluşturur ve bu anlaşma derleyici tarafından inşa zamanında zorla uygulanır. Sınıfınız bir interface’i uygulamayı talep ederse,sınıf başarıyla derlenmeden önce bu interface tarafından tanımlanmış bütün metotlar sınıfın kaynak kodunda görünmeli.
Not: Aslında ACMEBicycle sınıfını derlemek için, uygulanmış interface metotlarının başına “public” anahtar kelimesin eklenmeye ihtiyacı vardır. Gelecek derslerde bu kısımlara detaylıca değinmeye çalışacağız.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Java Interface (Arayüz) Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>Nesne yönelimli programlama başka sınıflardan yaygın olarak kullanılmış durum ve davranış miras almak için sınıflara izin verir. Bu örnekte, Bicycle sınıfı, MountainBike, RoadBike ve TandemBike’ın şuan üst sınıfı (superclass) haline gelir. Java programlama dilinde, her sınıfın (class) bir doğrudan superclass sahip olmasına izin verilir ve her superclass (üst sınıf), sınırsız sayıda alt sınıf (subclasses) potansiyeline sahiptir.
Bisiklet sınıflarının bir hiyerarşisi
Bir subclass (alt sınıf) oluşturma için söz dizimi basittir. Class bildiriminiz başlangıcına, extends anahtar kelimesini ve ardından miras almak için sınıfın adını kullanın.
class MountainBike extends Bicycle {
// new fields and methods defining
// a mountain bike would go here
}
Bu, MountainBike’a Bicycle sınıfındaki gibi benzer tüm alanları ve metotları verir, ancak kodunun özellikle onu benzersiz yapan özellikler üzerinde odaklanmasına imkan verir. Bu, alt sınıflarınızın kodunun okunmasını kolaylaştırır. Yine de, bu kod her subclass’ın kaynak dosyasında görünmeyeceğinden, her üst sınıfın tanımladığı durumu ve davranışı uygun bir şekilde belgelemeye dikkat etmelisiniz.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Java’da Kalıtım Nedir? Java Inheritance Kavramı – Java Dersleri first appeared on Kampüs Kod.]]>1- Equals() ve == arasında temek fark, birinin metot diğerinin operator olmasıdır.
2- == operatörünü referans karşılaştırması (reference) (address comparison) için ve equals() metotunu içerik karşılaştırması için kullanırız. Basitçe söylemek gerekirse, == her iki nesnenin aynı bellek konumuna işaret edip etmediğini denetlerken, .equals() nesnelerdeki değerlerin karşılaştırılmasını değerlendirir.
Detaylıca anlamak için örnek bir kod alanı koyuyorum:
public class KampusKod {
public static void main(String[] args) {
String s1 = "KAMPUSKOD";
String s2 = "KAMPUSKOD";
String s3 = new String("KAMPUSKOD");
String s4 = new String("KAMPUSKOD");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s3 == s4);
System.out.println(s3.equals(s4));
}
}
Kod Çıktısı:
true
true
false
true
İlk olarak String s1 kullanımı açıklayalım. String s1 = “text”; kullanımı, eğer varsa, string sabit havuzunda (string constant pool) bir örneği yeniden kullanır. Yoksa havuz içerisinde yeniden alan oluşturur. Bu durum Java’ya özgü Java Sanal Makinesi (JVM) tarafından gerçekleştirilen bir durumdur.
Şimdi Kod çıktımızı inceleyebiliriz:
Anlattıklarımın hepsini aşağıdaki şekil üzerinde kısaca özetledim.
Umarım yazım sizin için faydalı ve yeterince açıklayıcı olmuştur. Java mülakatlarınızda başarılar dilerim.
Gerçek dünya nesneleri iki özelliği paylaşır: Onların hepsi durum (state) ve davranışa (behavior) sahiptir. Köpekler, durum (isim, renk, cins, acıkmış) ve davranışa (havlama, gidip alma, kuyruk sallama) sahiptir. Ayrıca, bisikletlerde durum (mevcut vites, mevcut pedal ritmi, mevcut huz) ve davranış (vites değiştirme, pedal ritmini değiştirme, fren uygulama) bulunur. Gerçek dünyadaki nesneler için durum (state) ve davranış (behavior) belirlemek, nesneye yönelik programlama açısından düşünmeye başlamak için harika bir yoldur.
Hemen yakın çevrenizdeki gerçek dünyadaki nesneleri gözlemlemek için bir dakikanınızı ayırın. Gördüğünüz her bir obje için, kendinize iki soru sorun: “Bu nesne hangi olası durumlar içinde olabilir?” ve “Bu nesne hangi olası davranışı yapabilir?”. Gözlemlerinizi yazdığınızdan emin olun. Yaptığınız gibi, gerçek dünyada nesnelerin karmaşıklık bakımından farklı olduğunu fark edeceksiniz; Masaüstü lambanız sadece iki muhtemel duruma (açık ve kapalı) ve iki muhtemel davranışa (açmak, kapatmak) olabilir, fakat masaüstü radyonuz ek olarak durumlara (açık, kapalı, mevcut ses, mevcut istasyon) ve davranışlara (açmak, kaaptmak, sesi yükseltmek, ses, düşürmek, aramak, taramak ve istasyonu ayarlamak) olabilir. Ayrıca bazı nesnelerin de başka nesneler içerdiğini de fark edebilirsiniz. Bu gerçek dünya gözlemlerinin hepsi nesne yönelimli programlama dünyasına dönüşmektedir.
Bir yazılım nesnesi
Yazılım nesneleri kavramsal olarak gerçek dünyadaki nesnelere benzerdir. Onlar da, durum ve ilgili davranışlardan oluşur. Bir nesne, alanlarında (fields)(bazı programlama dillerinde değişkenler(variables)) onun durumunu içerir/hafızaya alır ve metotları (bazı programlama dillerinde fonksiyonlar (functions)) sayesinde onun davranışını gösterir. Metotlar, bir nesnenin iç durumunu etkiler ve nesneden nesneye iletişim için birincil mekanizma gibi hizmet verir. İç durumu (hiding internal) gizleme ve tüm etkileşimin bir nesnenin metotları sayesinde gerçekleştirilmesini gerektiren, nesne yönelimli programlamanın temek prensibi, veri kapsülleme (data encapsulation) olarak bilir.
Bir bisiklet düşünün, örneğin:
Bir yazılım nesnesi gibi modellenmiş bir bisiklet
Durumu (mevcut hız, mevcut pedal ritmi ve mevcut vites) ilişkilendirerek ve durumu değiştirmek için metotlar sağlayarak, nesne, dış dünyanın bunu nasıl kullanmasına izin verildiğinin kontrolü altındadır. Örneğin, bisiklet sadece 6 vitese sahipse, vitesleri değiştirme metotu 1 den küçük veya 6 dan büyük herhangi bir değeri kabul etmeyebilir/reddedebilir.
Birbirinden ayrı yazılım nesneleri içerinde kodun paketlenmesi aşağıdaki birçok avantajı sağlar.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Nesne Nedir? – Java Dersleri first appeared on Kampüs Kod.]]>Umarım hepimiz için güzel bir eğitim serisi olur. Tamamıyla yabancı kaynaklar kullanacağım için, çeviri yaptıktan sonra önemli terimlerin İngilizce karşılığını parantez içerisinde belirteceğim. Karşılaştığınız yazım yanlışları olursa, bilginizi paylaşmak isterseniz, sadece merhaba demek istemiştim diyorsanız said.ozgat(at)hotmail.com adresine mail atabilir veya yorum yapabilirsiniz.
Java programlama ödevi veya projelerinizle ilgili yardıma mı ihtiyaç duyuyorsunuz? Ödev ve projelerinizi çok uygun fiyata yapan, bu konuda bilgi sahibi kullanıcıları bir araya getiren Sadeceon ile java programlama ödevinizi yaptırabileceğiniz kullanıcılara çok rahat ulaşabilirsiniz. Hemen iletişime geçerek talebinizi iletebilir, siparişinizi vererek en hızlı şekilde profesyonel ve kaliteli ödevinize ulaşabilirsiniz. Sitede tüm ödev kategorilerinde hizmetleri bulabileceğiniz gibi, java dilindeki sorularınız için de sitedeki kullanıcılarla iletişime geçebilirsiniz.
Temel olarak kullanılacağım kaynak: Oracle Java Dokümantasyonu
Java Programlama Ders İçeriği (Sırasıyla)
Java Programlama Dili Hakkında Diğer Yazılar
Bir nesne (object),ilgili durum (state) ve davranışın (behavior) bir yazılım paketidir. Yazılım nesneleri genellikle gündelik hayatta bulduğunuz gerçek dünyadaki nesneleri modellemek için kullanılır. Bu ders bir nesne içinde durum ve davranışın nasıl temsil edildiğini açıklar, veri kapsülleme karamını tanıtır ve bu şekilde yazılımınızı tasarlamanın faydalarını açıklar.
Java’da nesne kavramını daha detaylı açıkladığım sayfaya buraya tıklayarak ulaşabilirsiniz.
Bir sınıf (class), nesnelerin oluşturulduğu bir taslaktır veya prototiptir. Bu bölüm, gerçek dünyadaki bir nesnenin durumunu ve davranışını modelleyen bir sınıfı tanımlar. Basit bir sınıfın bile durum ve davranışı açık bir şekilde nasıl modelleyebiliceğini gösteren kasıtlı temeller üzerine odaklanır.
Kalıtım (inheritance), yazılımınız düzenleme ve planlama için güçlü ve doğal bir teknik sağlar. Bu bölüm, sınıfların, onların üst sınıflarından durum ve davranışı nasıl miras aldığını açıklar ve Java programlama dili tarafından sağlanan basit sözdizimini kullanarak bir sınıfın diğerinden nasıl türetileceğini açıklar.
Arayüz (interface), sınıf ve dış dünya arasındaki bir anlaşmadır. Bir sınıf bir arayüz uygulandığında,o arabirim tarafından yayınlanan davranışı sağlamayı vaat eder. Bu bölüm basit bir arayüz tanımlar ve onu uygulayan herhangi bir sınıf için gerekli değişiklikleri açıklar.
Paket (package), mantıklı bir tarzda sınıfları ve arayüzleri düzenleme için bir ad alanıdır. Paketler içerisine kodunuzu yerleştirmek, büyük yazılım projelerinin kolayca yönetilmesini sağlar. Bu bölüm, bunun neden yararlı olduğunu açıklar ve Java Platformu tarafından sağlanan Uygulama Programlama Arayüzünü (API) tanıtır.
Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.
The post Nesneye Yönelimli Programlama Kavramları first appeared on Kampüs Kod.]]>