2017-01-29 32 views
2

目前我正在將我的bean創建和配置設置從基於XML的基於JAVA的spring配置中移動。我堅持移動數據庫設置?我如何在基於JAVA的配置文件中編寫這些hibernate db設置?如何在基於JAVA的spring config中配置Hibernate Db連接設置

<bean 
    class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="hibernateProperties"> 
     <value> 
      hibernate.connection.driver_class=com.mysql.jdbc.Driver 
      hibernate.connection.url=jdbc:mysql://url 
      hibernate.connection.username=username 
      hibernate.connection.password=password 
      hibernate.dialect=org.hibernate.dialect.HSQLDialect 
      hibernate.show_sql=false 
      </value> 

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

</bean> 


<tx:annotation-driven /> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
<tx:annotation-driven proxy-target-class="true" /> 

我已添加交易詳情。我得到這個異常:

造成的:拋出java.lang.ClassNotFoundException: org.hibernate.context.spi.CurrentSessionContext

回答

4

這裏是配置。我還添加了交易管理功能,您將在最終解決方案中明確需要這些功能。

import java.util.Properties; 
import javax.sql.DataSource; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.jdbc.datasource.DriverManagerDataSource 
import org.springframework.orm.hibernate3.HibernateTransactionManager; 
import org.springframework.orm.hibernate3.LocalSessionFactoryBean 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@EnableTransactionManagement 
public class DbConfig{ 

@Bean 
public DataSource getDatasource() { 

     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
     dataSource.setUrl("jdbc:mysql://url"); 
     dataSource.setUsername("username"); 
     dataSource.setPassword("password"); 

     return dataSource; 
    } 

@Bean 
public SessionFactory getSessionFactory() throws IOException{ 

    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); 
    sessionFactoryBean.setPackagesToScan("com.test"); 
    sessionFactoryBean.setHibernateProperties(hibernateProperties()); 
    sessionFactoryBean.setDataSource(getDatasource()); 
    sessionFactoryBean.afterPropertiesSet(); 

    return sessionFactoryBean.getObject(); 
} 

@Bean 
    public HibernateTransactionManager getTransactionManager() throws IOException{ 
     HibernateTransactionManager transactionManager = new HibernateTransactionManager(); 
     transactionManager.setSessionFactory(getSessionFactory()); 

     return transactionManager; 
    } 


private static Properties getHibernateProperties() { 

     Properties hibernateProperties = new Properties(); 
     hibernateProperties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
     hibernateProperties.put("hibernate.show_sql", false); 
     // other properties 

     return hibernateProperties; 
    } 
+0

謝謝:)讓我檢查一下,並得到交易管理 – user3681970

+0

小更新。我用更少的細節和例外更新了這個問題。你能幫忙嗎? –

+0

我得到NoClassDefFound例外的回來 – user3681970

相關問題