Results 1 to 10 of 11

Thread: Can't access the database in my Spring MVC project

Threaded View

  1. #1
    Join Date
    Feb 2013
    Location
    israel
    Posts
    17

    Default Can't access the database in my Spring MVC project

    I am working with STS in eclipse Juno ,Spring 3.1.1 ,hibernate 4.1, tomcat 7 and mySQL.

    I created a simple MVC template project. my purpose is that the user will enter some data to a form, and that data will
    be saved in the database.

    I have created:

    web layer:

    1. the simple form.
    2. the controller which recieve the data from the form and pass it to the service layer.

    service layer:

    a service class which contains a DAO field and operate a dao method.

    data access layer:

    1. A mock DAO implementation which doesn't commincate with the database.
    2. A Real DAO implementation which doesn commincate with the database.

    When i checked the system with the mock DAO implementation, everything was OK - going from the web layer to the mock DAO.

    but when injected the real DAO, i just got an 404 error, and nothing in the happened in the Database.

    I will show only the DAO implementation and the root-context.xml because this is where i think the problem.

    My DAO Implementation:

    Code:
        @Repository
        public class Presentation_page_dao_hibernate_Impl implements Presentation_page_dao {
        	
        	private  SessionFactory sessionFactory;
        	
        	@Autowired
        	public Presentation_page_dao_hibernate_Impl(SessionFactory sessionFactory) {
        		this.sessionFactory=sessionFactory;
        		System.out.println("Hi! i'm in ActionDao_HibernateImpl constructor");
        		}
        
        	private Session currentSession() {
        		return sessionFactory.getCurrentSession();
        	}
        
        
        	public void create(Presentation_page pp) {	
        		currentSession().beginTransaction();
        		currentSession().save(pp);
        		currentSession().getTransaction().commit();
        		currentSession().close();		
        	}
        
        
        	public Presentation_page read(int pageid) throws PresentationPageNotFoundException {
        		
        		
        		currentSession().beginTransaction();
        		
        		Criteria criteria=currentSession().createCriteria(Presentation_page.class);
        		
        		criteria.add(Restrictions.eq("page_id", pageid));
        		List<Presentation_page> list_of_pages=criteria.list();
        		
        		currentSession().getTransaction().commit();
        		currentSession().close();
        		
        		for(Presentation_page pp:list_of_pages) {
        			if (pp.getPage_id()==pageid){
        				return pp;
        			}
        		}
        		return null;
        	}
        
        	public void update(Presentation_page pp) throws PresentationPageNotFoundException {
        
        		currentSession().beginTransaction();
        		currentSession().update(pp);
        		currentSession().getTransaction().commit();
        		currentSession().close();	
        		
        	}
        
        	@Override
        	public void delete(Presentation_page  pp) throws PresentationPageNotFoundException {
        
        		currentSession().beginTransaction();
        		currentSession().delete(pp);
        		currentSession().getTransaction().commit();
        		currentSession().close();
        	}
        
        }
    This is my root-context.xml:

    Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
        	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        	xmlns:context="http://www.springframework.org/schema/context"
        	xmlns:jee="http://www.springframework.org/schema/jee"
        	xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
        		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">	
        	
        	<!-- Root Context: defines shared resources visible to all other web components -->
        	
        	
        	<!-- For annotations -->
        	<context:component-scan 
        		base-package="my.topLevel.pack">
        	</context:component-scan> 
        	
        	<import resource="hibernate.xml"/>
        	
        
        </beans>
    This is my hibernate.xml:

    Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
        	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        	xmlns:jee="http://www.springframework.org/schema/jee"
        	xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
        		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">	
        	
            
        
        	  <!-- Datasources -->
         	<bean id="dataSource_id" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        		<property name="url" value="jdbc:mysql://localhost:3306/spring_presentation"/>
        		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        		<property name="username" value="rotemya"/>
        		<property name="password" value="*******"/> 	
           </bean> 
        	
        	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        		
        		<property name="dataSource" ref="dataSource_id"/>
        		
        		<property name="packagesToScan" value="my.topLevel.pack.Domain"/>
        		
        		<property name="hibernateProperties">
        			<props>
        			
        				<prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
               			
        				<!--JDBC connection pool (use the built-in)-->        		
        				<prop key="connection.pool_size">1</prop>
        
                		<!--Enable the second-level cache -->
               			<prop key="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</prop>  
                
                		<!--Echo all executed SQL to stdout-->
                		<prop key="show_sql">true</prop>
        
                		<!--Drop and re-create the database schema on startup-->
                		<prop key="hbm2ddl.auto">create</prop>
        			</props>
        		</property>
        		
        	</bean>
        
        </beans>
    I have the following dependencies to the pom.xml:

    Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        	<modelVersion>4.0.0</modelVersion>
        	<groupId>my.topLevel</groupId>
        	<artifactId>pack</artifactId>
        	<name>SpringSTS_Sample_Project</name>
        	<packaging>war</packaging>
        	<version>1.0.0-BUILD-SNAPSHOT</version>
        	<properties>
        		<java-version>1.6</java-version>
        		<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        		<org.aspectj-version>1.6.10</org.aspectj-version>
        		<org.slf4j-version>1.6.6</org.slf4j-version>
        	</properties>
        	<dependencies>
        		<!-- Spring -->
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-context</artifactId>
        			<version>${org.springframework-version}</version>
        			<exclusions>
        				<!-- Exclude Commons Logging in favor of SLF4j -->
        				<exclusion>
        					<groupId>commons-logging</groupId>
        					<artifactId>commons-logging</artifactId>
        				 </exclusion>
        			</exclusions>
        		</dependency>
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-webmvc</artifactId>
        			<version>${org.springframework-version}</version>
        		</dependency>
        				
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-orm</artifactId>
        			<version>3.0.3.RELEASE</version>
        		</dependency>
        		<dependency>
        			<groupId>org.springframework</groupId>
        			<artifactId>spring-jdbc</artifactId>
        			<version>3.0.3.RELEASE</version>
        		</dependency>
        		<dependency>
        			<groupId>org.eclipse.persistence</groupId>
        			<artifactId>javax.persistence</artifactId>
        			<version>2.0.0</version>
        		</dependency>
        		<dependency>
        			<groupId>mysql</groupId>
        			<artifactId>mysql-connector-java</artifactId>
        			<version>5.1.13</version>
        		</dependency>
        	</dependencies>
          
        </project>
    This are my hibernate jar files:
    mypath.PNG

    I'm getting the following error:

    java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion

    Any ideas?
    Last edited by rotemya; Mar 4th, 2013 at 05:22 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •