Sansür, bir toplumun kendine olan güvensizliğini yansıtır ve otoriter rejimlerin belirgin bir özelliğidir.

--Potter Stewart

30.12.2010

Spring ile Hibernate Annotation Kullanılan Entity Sınıfların Otomatik Algılanması

Veri erişim katmanında JPA standartını kullanırken annotation ile tanımladığımız entity sınıflarımızın algılanması, proje ayağa kalkarken otomatik gerçekleştirilir. Araya JPA standartını sokmak yerine doğrudan Hibernate çatısını kullanmak istediğimizde annotationlarla tanımlanmış bu entity sınıflarının algılanabilmesi için kullanılagelen yaygın yöntem ya hibernate.cfg.xml içersinde bu sınıfları algılatmak ya da her bir entity sınıfını Spring'in Hibernate entegrasonu için kullanıma sunduğu AnnotationSessionFactoryBean tanımı içinde tek tek belirtmektir:

<bean id="sessionFactory"
 class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="dataSource" ref="${dataSourceType}" />
 <property name="hibernateProperties">
  <props>
   <prop key="hibernate.dialect">${hibernate.dialect}</prop>
   <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
   <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
   <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
  </props>
 </property>
 <property name="annotatedClasses">
  <list>
   <value>com.prime.ExampleClass1</value>
   <value>com.prime.ExampleClass2</value>
  </list>
    </property>
</bean>


annotatedClasses'ın bu şekilde kullanımı entity sınıf sayısı arttıkça sıkıntı yaratmaya başlayabilir. Bunun yerine aynı Spring bean'in packagesToScan değişkeni uygun paket yapısıyla kurarak uzun uzadıya sınıf tanımları yapmaktan kurtulabilirsiniz:

<property name="packagesToScan" value="com.prime" />

ya da

<property name="packagesToScan">
 <list>
  <value>com.prime.package1.model</value>
  <value>com.prime.package2.model</value>
 </list>
</property>

Hibernate annotation kullanan entitylerinizin otomatik algılanması için yukardaki tüm kullanımlara ek olarak proje classpath'inde javassist.jar kütüphanesi de bulunmalıdır..

Hiç yorum yok:

Yorum Gönder