Giriş
Şu satırı dahil ederiz.
1. DataSource
2. LocalSessionFactoryBean. LocalSessionFactoryBean DataSource nenesini kullanır.
3. HibernateTransactionManager. HibernateTransactionManager bean LocalSessionFactoryBean nesnesini kullanır.
4. DataSourceTransactionManager. Bazı örneklerde HibernateTransactionManager yerine DataSourceTransactionManager kullanılıyor.
Dolayısıyla bu sınıf için en azından şu metodları çağırmak gerekiyor.
setDataSource()
setHibernateProperties()
setPackagesToScan()
Sınıfı yarattıktan sonra HibernateTransactionManager sınıfının setSessionFactory() metoduna geçmek gerekiyor.
constructor
Şöyle yaparız.
Örnek
Şöyle yaparız.
XML ile Annotated sınıfları atamak için şöyle yaparız.
Örnek
Şöyle yaparız.
XML ile DataSource atamak için şöyle yaparız.
XML ile atamak için şöyle yaparız.
Örnek
Şöyle yaparız.
Elimizde bir Validator bean olsun.
Şöyle yaparız.
<context:component-scan> yerine bu metodu çağırmak lazım. Açıklaması şöyle. Dolayısıyla bir sınıfın @Entity olarak işaretlenmesi işe yaramıyor
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
XML ile atamak için şöyle yaparız.
Şu satırı dahil ederiz.
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
Bu sınıf Hibernate kütüphanesindeki SessionFactory nesnesini yaratır.import org.hibernate.SessionFactory;
Spring + Hibernate kullanmak için şu bean'ler gerekir.1. DataSource
2. LocalSessionFactoryBean. LocalSessionFactoryBean DataSource nenesini kullanır.
3. HibernateTransactionManager. HibernateTransactionManager bean LocalSessionFactoryBean nesnesini kullanır.
4. DataSourceTransactionManager. Bazı örneklerde HibernateTransactionManager yerine DataSourceTransactionManager kullanılıyor.
Dolayısıyla bu sınıf için en azından şu metodları çağırmak gerekiyor.
setDataSource()
setHibernateProperties()
setPackagesToScan()
Sınıfı yarattıktan sonra HibernateTransactionManager sınıfının setSessionFactory() metoduna geçmek gerekiyor.
constructor
Şöyle yaparız.
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
setAnnotatedClasses metoduÖrnek
Şöyle yaparız.
sessionFactory.setAnnotatedClasses(Foo.class);
ÖrnekXML ile Annotated sınıfları atamak için şöyle yaparız.
<bean id="hibernate5AnnotatedSessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>domain.Delivery</value>
<value>domain.Client</value>
<value>domain.User</value>
<value>domain.Session</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="maxwait">10000</prop>
<prop key="maxidle">25</prop>
<prop key="minidle">5</prop>
<prop key="format_sql">false</prop>
<!--<prop key="hibernate.cache.use_query_cache">true</prop>-->
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.c3p0.acquire_increment">1</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.timeout">25000</prop>
<prop key="hibernate.c3p0.max_statements">100</prop>
<prop key="hibernate.c3p0.idle_test_period">9000</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">true</prop>
<prop key="hibernate.c3p0.acquireRetryAttempts">10</prop>
<prop key="hibernate.c3p0.validate">true</prop>
<prop key="hibernate.c3p0.preferredTestQuery">select 1</prop>
</props>
</property>
</bean>
setDataSource metodu
DataSource nesnesini Hibernate yerine Spring'in yönetmesi için kullanılır.Örnek
Şöyle yaparız.
sessionFactory.setDataSource(...);
ÖrnekXML ile DataSource atamak için şöyle yaparız.
<bean id="dataSource">
.....
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
......
</property>
<property name="mappingResources">
.......
</property>
</bean>
setHibernateProperties metodu
ÖrnekXML ile atamak için şöyle yaparız.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>org/springframework/samples/petclinic/hibernate/petclinic.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.dialect}
</value>
</property>
</bean>
Örnek
Şöyle yaparız.sessionFactory.setHibernateProperties(...);
Şöyle yaparız.
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
sessionFactory.setHibernateProperties(hibernateProperties);
ÖrnekElimizde bir Validator bean olsun.
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
Şöyle yaparız.Properties customValidator = new Properties();
customValidator.put("javax.persistence.validation.factory", validator());
sessionFactory.setHibernateProperties(customValidator);
setMappingResources metoduŞöyle yaparız.
sessionFactory.setMappingResources("Model.hbm.xml");
setPackagesToScan metodu<context:component-scan> yerine bu metodu çağırmak lazım. Açıklaması şöyle. Dolayısıyla bir sınıfın @Entity olarak işaretlenmesi işe yaramıyor
<context:component-scan/> does not recognize Hibernate/JPA annotations and hence has no effect.Örnek
Şöyle yaparız.
sessionFactory.setPackagesToScan("*");
ÖrnekŞöyle yaparız.
sessionFactory.setPackagesToScan("hibernate.packagesToScan");
ÖrnekŞöyle yaparız.
sessionFactory.setPackagesToScan(new String[] { .....});
ÖrnekXML ile atamak için şöyle yaparız.
<bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"
id="sessionFactory_1">
<property name="packagesToScan">
<list>
<value>com.hibernate.mapping</value>
</list>
</property>
<property name="dataSource" ref="dataSource"/>
</bean>
Hiç yorum yok:
Yorum Gönder