简体   繁体   中英

Spring Hibernate MySQL - No connection?

I've a problem with connection to mysql. This is my code:

Dependencies:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
    </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>${org.springframework-version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>      
    </dependency>

    <!-- Apache Database Connection Pool -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.10.Final</version>
    </dependency>

    <!-- MySQL JDBC Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.30</version>       
    </dependency>  
</dependencies>

Context:

  <mvc:annotation-driven /> 
<mvc:resources mapping="/resources/**" location="/resources/" />
<context:component-scan base-package="com.packt.app" />

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath" value="/WEB-INF/view/"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value=""/>
    <property name="suffix" value=".html"/>
    <property name="exposeSpringMacroHelpers" value="true"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://ADMIN-PC:3306/data"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean> 

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
</bean>

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

<bean id="testDAO" class="com.packt.app.DAO.Impl.TestDAOImpl">
    <constructor-arg>
        <ref bean="sessionFactory" />
    </constructor-arg>
</bean>   

Controller:

@Controller
@RequestMapping("/tests")
public class TestController {

@Autowired
TestService testService;

@RequestMapping("/testslist.json")
public @ResponseBody List<Test> getTestList() {
    return testService.getTests();
}

@RequestMapping("/layout")
public String getTestPartialPage(ModelMap modelMap) {
    return "tests/layout";
}
}

Model:

@Entity
@Table(name = "test") 
public class Test{
@Id
@GeneratedValue
@Column(name = "id")
private int id;

@Column(name = "name")
private String name;

///gettters and setters
}

Impl:

@Repository
public class TestDAOImpl implements TestDAO {

@Autowired
private SessionFactory sessionFactory;

public TestDAOImpl() {
}

public TestDAOImpl(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

@Override
@Transactional
public List<Test> getTests() {
    @SuppressWarnings("unchecked")
    List<Test> tests = (List<Test>) sessionFactory.getCurrentSession()
            .createCriteria(Test.class)
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
    return tests;
}
}

Angular Controller:

var TestsController = function($scope, $http) {
$scope.test = {};
$scope.editMode = false;

$scope.fetchTestList = function() {
    $http.get('tests/testslist.json').success(function(testList){
        $scope.tests = testList;
    });
};

$scope.resetTestForm = function() {
    $scope.resetError();
    $scope.test = {};
    $scope.editMode = false;
};

$scope.resetError = function() {
    $scope.error = false;
    $scope.errorMessage = '';
};

$scope.setError = function(message) {
    $scope.error = true;
    $scope.errorMessage = message;
};

$scope.fetchTestList()();

$scope.predicate = 'id';
};

Hibernate config:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>        
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property> 

<mapping class="com.packt.app.model.Test"/>   
 </session-factory>
</hibernate-configuration>

Application runs without error, even when MySql Server off. In html view show me that list count "getTests" is 0. It looks like application not connection with MySQL Server. Whats wrong? Please help me.

The dialect in hibernate configuratiin is missing a L

Should be mysqlDialect i reckon.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM