Spring JPA org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
Java , Spring Framework / 06 Ekim 2017

Merhaba değerli Java dostları, bu yazımda aslında çok basit bir hareketle çözülebilen; ama bu çözümün bulunması uzun vakit alabilen bir probleme değinmek istiyorum. Entity tanımları yapılırken bağlı entityler lazy load olarak tanımlanabilir. Bu durumda gerçekten o bağlı nesneler çağrıldığında yüklenir. Çağrılmadığı sürece bir proxy ile işler idare edilir. Fakat session ve transaction yönetimi şeklinize bağlı olarak org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role hatasını alabilirsiniz. Bu hatanın nedeni lazy load yapılırken aktif bir session bilgisinin bulunmaması. Bunu çok basit bir hareketle çözüyoruz. Ben annotation tabanlı gittiğim için java kodu üzerinden örnek vereceğim. Xml tabanlı gidenler için de aslında sadece tanım şekli değişiyor, mantık aynı. EntityManagerFactory sınıfı üzerinden properties veriyoruz. LocalContainerEntityManagerFactoryBean.setJpaProperties(additionalProperties); Paylas    

Hibernate Transaction Properties
Hibernate , Java / 07 Ekim 2010

Hibernate ile ilgili özellik listemize devam edelim. hibernate.transaction.factory_class TransactionFactory örneği adı. jta.UserTransaction Uygulama sunucusundan UserTransaction örneği almak için kullanılacak JNDI ismi. hibernate.transaction.manager_lookup_class TransactionManagerLookup örneği adı. hibernate.transaction.flush_before_completion Değer true olduğu takdirde transaction son kısmında, flush işlemi oturum tarafından gerçekleştirilir. hibernate.transaction.auto_close_session Değer true olursa transaction bitiminden sonra oturum kapatılır. Kaynak: Hibernate Reference Documentation Paylas    

Hibernate Cache Properties
Hibernate , Java / 06 Ekim 2010

Önceki yazının bitimine bu yazıyı ekleyelim 😀 :D. hibernate.cache.provider_class CacheProvider sınıf adı. hibernate.cache.use_minimal_parts Cache işlemlerini optimize eden özellik. hibernate.cache.use_query_cache Query cache işlemini aktif eder. hibernate.cache.use_second_level_cache Second cache olarak belirtilen özelliğin pasif edilmesini sağlar. hibernate.cache.query_cache_factory QueryCache arayüzünü uyguluyan bir sınıf adı. hibernate.cache.region_prefix Ön ek değeri hibernate.cache.use_structured_entries Verilerin daha okunabilir formatta saklanmasını sağlar. Kaynak: Hibernate Reference Documentation Paylas    

Hibernate JDBC Connection Properties
Hibernate , Java / 05 Ekim 2010

Bir önceki yazının devamı niteliğinde olan bu yazıda da yine bazı özellikler ve değerlerine bakacağız. Hemen tablomuza geçelim. hibernate.jdbc.fetch_size JDBC fetch değerini atayan, sıfırdan farklı bir değer. hibernate.jdbc.batch_size JDBC batch değerini atayan, sıfırdan farklı bir değer. hibernate.jdbc.batch_versioned_date Varsayılan değeri false. True yapılması önerilir. hibernate.jdbc.factory_class Çoğu uygulamada kullanılmayan bir özellik. hibernate.jdbc.use_scrollable_resultset Scrollable, yani üzerinde ileri geri ilerlenebilen, resultset örneği için değer atayan özellik. hibernate.jdbc.use_streams_for_binary Yazma ve okuma işlemleri için stream kullanılmasını ayarlar. hibernate.jdbc.use_get_generated_keys Ekleme işlemlerinden sonra üretilen key değerlerini alma özelliği. hibernate.connection.provider_class JDBC bağlantısı sağlayıcısının sınıf adı özelliği. hibernate.connection.isolation JDBC izole değerini ayarlar. Bazı veritabanları desteklemeyebilir. hibernate.connection.autocommit Otomatik commit seçeneği. Genellikle false olması istenir. hibernate.connection.release_mode Bağlantının Hibernate tarafından ne zaman kapatılacağını belirleyen özellik. hibernate.connection.propertyName Verilen propertyName değerini işler. hibernate.jndi.propertyName Verilen propertyName değerini işler. Paylas    

Hibernate Configuration Properties
Hibernate , Java / 04 Ekim 2010

Hibernate ile çalışırken en önemli kısımlardan birisi de genel olarak hibernate.cfg.xml olarak adlandırılan XML dosyasında doğru ve gerekli bağlantı vb. ayarları yapmaktır. Onun için bu yazıda ve birkaç yazıda bu özellikler üzerinde durmaya çalışacağım. Tablolara halinde temel özelliklere ve ne tür değerler atanabileceğine bakalım. hibernate.dialect Veritabanı ile Hibernate arasındaki SQL dönüşümleri için doğru dialect değeri verilmelidir. Örneğin Oracle bağlantısı için bu değer org.hibernate.dialect.OracleDialect olmalıdır. hibernate.show_sql SQL işlemleri sırasında SQL komutlarının çıktı olarak verilip verilmemesini belirler. hibernate.format_sql Yukarıdaki özellikle bağlantılı olarak çıktıların formatlanmasını sağlar. hibernate.default_schema Bağlantı kurulan veritabanı schema ismine göre belirlenir. hibernate.default_catalog Bağlantı kurulan catalog ismine göre belirlenir. hibernate.session_factory_name JNDI ile bağlantılı olarak SessionFactory örneği parametre olarak verilir. hibernate.max_fetch_depth x – 1 outer join işlemlerinde en yüksek derinlik değerini belirler. hibernate.default_batch_fetch_size İlişkilerde varsayılan toplu değer atanır. hibernate.default_entity_mode Session örnekleri için varsayılan entity modlarını ayarlar. hibernate.order_updates Update işlemlerinde primary key değerlerine göre sıralama yapılmasını sağlar. hibernate.generate_statistics Daha iyi bir performans için bilgiler toplanır. hibernate.use_identifier_rollback Nesneler silindiğinde identifier özelliklerin başlangıç değerlerine döndürülmesini sağlar. hibernate.use_sql_comments SQL komutları içerisine yorum satırları eklenir. Paylas