Singleton Tasarım Kalıbı

Merhaba arkadaşlar, “Design Pattern” deyince akla ilk gelen pattern olan “Singleton Design Pattern” ile tasarım kalıpları yazı dizisine başlıyoruz.  TASARIM KALIPLARI:   Design patternler, sıklıkla karşılaşılabilecek sorunlara, bu sorunları soyutlayarak tasarlanmış genel çözüm üretirler. Pattern demek, aslında bir sorun ve bu sorunun da çözümü demektir. Bu sorunlar da 3 ana kategoriye ayrılmış durumdadır. Creational Structural Behavioral … 

 

Hibernate – @Index

Eskiden index anotasyonu tek başına kullanılabiliyordu. Fakat bu anotasyon deprecated olmuştur ve artık tek başına kullanmamak gerekir. Bunun yerine table anotasyonu içinde, index anotasyonu kullanılabilir. 3 farklı özellik sunar. Bunlar name columnList unique name ile ismi özelleştirilebilir. columnList ile eklenen indexin hangi kolonlara ait olacağı belirtilir. Birden fazla eklenebilir. columnList içine kolon adlarını virgüllerle ayırarak … 

 

Hibernate – @ForeignKey

Eskiden foreign key anotasyonu tek başına kullanılabiliyordu. Fakat bu anotasyon deprecated olmuştur ve artık tek başına kullanmamak gerekir.Bunun yerine bazı anotasyonların içinde, foreign key anotasyonu kullanılabilir. Örneğin JoinColumn anotasyonu içinde, ilgili kolona ait foreign keyi özelleştirmek için kullanılabilir. Foreign Key constraintleri hibernate tarafından oluşturulurken oldukça okunaksız bir isimle oluşturulurlar. Bu anotasyon sayesinde kendi özel isimlerimizi … 

 

Hibernate – @JoinColumn

@JoinColumn anotasyonu Entiy içinde entity kullanılması durumunda kullanılır. Join yapacağımız tablo ile ilişkileri belirtmeye yarar. 9 farklı özellik sunar; Bunlar: name referancedColumnName unique nullable updatable insertable columnDefinition table foreignKey name ile oluşacak kolonun adını, referancedColumnName ile id dışında başka bir kolon ile join yapılacaksa, o kolonu, unique ile tablodaki bu kolonun unique olup olmadığını, nullable … 

 

Hibernate – @OneToMany

@OneToMany anotasyonu entity içinde entity kullanılıyor ve aralarında da bire çok bir ilişki var ise kullanılır. Şehir ve Ulke diye iki nesnemizin olduğunu düşünelim. bir ülkenin birden fazla şehri olur fakat bir şehrin birden fazla ülkesi olmaz. Ulke tablosu içinde Sehirler listesine join yapmak istersek. Aralarındaki ilişki bire çok olduğuna göre, bu tabloların entitylerini yazarken, … 

 

Hibernate – @ManyToOne

@ManyToOne anotasyonu entity içinde entity kullanılıyor ve aralarında da çoka bir ilişki var ise kullanılır. En sık kullanılan ilişki tipidir. Şehir ve Ulke diye iki nesnemizin olduğunu düşünelim. bir ülkenin birden fazla şehri olur fakat bir şehrin birden fazla ülkesi olmaz. Sehir tablosu içinde Ulke tablosuna join yapacağız. Aralarındaki ilişki çoka bir olduğuna göre, bu … 

 

Hibernate – @ManyToMany

@ManyToMany anotasyonu entity içinde entity kullanılıyor ve aralarında da çoka çok bir ilişki var ise kullanılır. Kitap ve Yazar diye iki nesnemizin olduğunu düşünelim. Bir kitabın birden fazla yazarı olabilir. Aynı şekilde yazar birden fazla kitap da yazmış olabilir. Kitap tablosu içinde Yazar tablosuna join yapacağız. Aralarındaki ilişki çoka çok olduğuna göre, bu tabloların entitylerini … 

 

Hibernate – @OneToOne

@OnetoOne anotasyonu entity içinde entity kullanılıyor ve aralarında da birebir ilişki var ise kullanılır. Insan ve Parmak izi diye iki nesnemizin olduğunu düşünelim. İnsan tablosu içinde Parmak izi tablosuna join yapmak istersek, aralarındaki ilişki birebir olduğuna göre, bu tabloların entitylerini yazarken, join yaptığımız yerde OnetoOne anotasyonu kullanılmalıdır. 6 farklı özellik sunar. fetch cascade mappedBy optional … 

 

Hibernate – @Lob

String Blob ya da Clob alanların eşleştirilmesinde kullanılır. Anlamı “Large Object” yani “Büyük Nesne” demektir. Lob anotasyonu ile ilgili kolonun büyük veri olduğunu belirtiriz. String, blob ya da clob alanlarla birlikte kullanılabilir. Database bu anotasyonu gördüğü kolonlar için alanları büyük veri olarak oluşturur. Herhangi bir özellik sunmaz. Sadece @Lob yazmamız bu alanın büyük veri alanı … 

 

Hibernate – @Transient

Pojo içinde olmasını istediğimiz ama database’de bir karşılığının olmasını istemediğimiz durumlarda kullanılır. Eğer hiçbir anotasyon kullanmazsak, bu alanlar yine de oluşturulurlar. Transient alanların database’de bir karşılığı olmaz. Yani ben @Entity olarak belirttiğim bir POJO içinde, database’e yazılmasını istemediğim bir alan tanımlayabilirim. “Database’de kolon oluşmasın” komutunu da @Transient ile veririm. Bu sayede ilgili pojo nesnesi oluştuğu … 

 

Hibernate – @Temporal

Tarih verilerinin database e hangi formatta yazılacağını belirtir. TemporalType için 3 değer vardır. DATE: gün-ay-yıl tutar. (dd.mm.yyyy) TIME : Saat – Dakika – Saniye tutar (hh:mm:ss) DATETIME: Her ikisini de tutar (dd:mm:yyyy hh:mm:ss