0

I try to autowired session factory to dao layer.I have error:java.lang.NoClassDefFoundError: I locked more configures but no one work for me. This is my dao:

  @Component
        public class UserDaoImpl implements UserDao{
    @Autowired 
   private SessionFactory sessionFactory;  


  @Override
      public void saveUser(User user) {
    sessionFactory.getCurrentSession().save(user);
   }

I have hibernate config file:

<hibernate-configuration>
   <session-factory>
  <property    name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306 /vezba2?zeroDateTimeBehavior=convertToNull</property>
<property name="hibernate.connection.username">root</property>
<mapping class="com.entiti.User"/>
<mapping class="com.entiti.Rezervacija"/>
   </session-factory>
</hibernate-configuration>

I create xml file with beans:

             <context:annotation-config/>

    <bean id="user" class="com.dao.UserDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
     <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="configLocation">
      <value>classpath*:hibernate.cfg.xml</value>
      </property>
     </bean>  

Please help if someone know where is my fault.

J.P
  • 141
  • 3
  • 9

1 Answers1

0

Since you are using Spring, it might be better to forget about using the hibernate.cfg.xml file, and populate your xml file with your needed settings instead. See the xml below if this helps. This example uses c3p0 as a data-source for connection pooling. A TransactionTemplate is also available, but commented out. Uncomment if you need it.

<context:annotation-config/>
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" > 
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/vezba2"/>        
    <property name="user" value="root"/>
    <property name="password" value="root"/>        
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
</bean> 
<bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="myDataSource">
    <property name="dataSource" ref="myDataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>               
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">false</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.use_sql_comments">true</prop> 
            <prop key="hibernate.connection.charSet">UTF-8</prop>
        </props>
    </property>
    <property name="annotatedClasses">
        <list>
            <value>com.entiti.User</value>
            <value>com.entiti.Rezervacija</value>                       
        </list>
    </property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref bean="mySessionFactory"/>
    </property>
</bean>   
<!--<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate" p:transactionManager-ref="transactionManager"/>-->