Hibernate Соединение не запускается при запуске Apache Tomcat - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь установить связь с моей базой данных MySQL, и Hibernate вставляет таблицу в мою базу данных.Всякий раз, когда я запускаю Apache Tomcat, сервер запускается, но Hibernate SQL не обнаруживается, и моя база данных не заполняется таблицей.

Класс модели:

package com.spring.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

//Hibernate looks for the @Entity and will create a table with the name 'Book'
@Entity(name = "Book")
public class Book {

    @Id //Tell hibernate this is a primary key
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String author;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    @Override
    public String toString() {
        return "Book [id=" + id + ", title=" + title + ", author=" + author + "]";
    }
}

Файл конфигурации:

package com.spring.config;

import static org.hibernate.cfg.AvailableSettings.C3P0_ACQUIRE_INCREMENT;
import static org.hibernate.cfg.AvailableSettings.C3P0_MAX_SIZE;
import static org.hibernate.cfg.AvailableSettings.C3P0_MAX_STATEMENTS;
import static org.hibernate.cfg.AvailableSettings.C3P0_MIN_SIZE;
import static org.hibernate.cfg.AvailableSettings.C3P0_TIMEOUT;
import static org.hibernate.cfg.AvailableSettings.DRIVER;
import static org.hibernate.cfg.AvailableSettings.HBM2DDL_AUTO;
import static org.hibernate.cfg.AvailableSettings.PASS;
import static org.hibernate.cfg.AvailableSettings.SHOW_SQL;
import static org.hibernate.cfg.AvailableSettings.URL;
import static org.hibernate.cfg.AvailableSettings.USER;

import java.util.Properties;

import org.hibernate.cfg.Environment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
//Where is the property file located
@PropertySource("classpath:db.properties")
//Enable transactions
@EnableTransactionManagement
//These are the packages to scan for components
@ComponentScans(value = {
        @ComponentScan("com.spring.dao"),
        @ComponentScan("com.spring.service")
})
public class AppConfig {
    //Create two bins => One on local session factory bean and another one on hibernate transaction manager.
    //The local session factory bean will read the properties file and set the properties and return a local session factory bean
    //In the hybrid transaction manager you will set the session factory.

    @Autowired
    private Environment env;

    @Bean
    public LocalSessionFactoryBean getSessionFactory() {
        LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();

        Properties props = new Properties();
        //Setting the JDBC properties from the properties file(db.properties).
        props.setProperty(DRIVER, "com.mysql.cj.jdbc.Driver");
        props.setProperty(URL, "jdbc:mysql://localhost:3306/bookapi");
        props.setProperty(USER, "root");
        props.setProperty(PASS, "thisismypasswordlol");

        //Setting the hibernate properties from db.properties
        props.setProperty(SHOW_SQL, "true");
        props.setProperty(HBM2DDL_AUTO, "update");

        //Setting the C3P0 properties from db.properties
        props.setProperty(C3P0_MIN_SIZE, "5");
        props.setProperty(C3P0_MAX_SIZE, "20");
        props.setProperty(C3P0_ACQUIRE_INCREMENT, "1");
        props.setProperty(C3P0_TIMEOUT, "1800");
        props.setProperty(C3P0_MAX_STATEMENTS, "150");

        factoryBean.setHibernateProperties(props);
        factoryBean.setPackagesToScan("com.spring.model");

        return factoryBean;
    }

    //SessionFactory is a factory class for Session objects. It is available for the whole application while a sesison is only available for
    //a particular transaction. SessionFactory => Car manufacturing plant, Session => Car => Session objects store information needed for a particular
    //user's session on the web server.
    @Bean
    public HibernateTransactionManager getTransactionManager() {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(getSessionFactory().getObject());
        return transactionManager;
    }
}

Сообщение:

Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name:   Apache Tomcat/9.0.21
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Jun 4 2019 20:19:36 UTC
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 9.0.21.0
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 10
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jre1.8.0_211
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_211-b12
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         C:\Users\Desktop\work\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         C:\Users\Documents\apache-tomcat-9.0.21
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\Users\Desktop\work\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\Users\Documents\apache-tomcat-9.0.21
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=C:\Users\Desktop\work\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=C:\Users\Documents\apache-tomcat-9.0.21\endorsed
Jul 09, 2019 9:33:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Jul 09, 2019 9:33:54 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_211\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre1.8.0_211/bin/server;C:/Program Files/Java/jre1.8.0_211/bin;C:/Program Files/Java/jre1.8.0_211/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Users\AppData\Local\Microsoft\WindowsApps;C:\Users\AppData\Local\atom\bin;C:\Users\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\AppData\Roaming\npm;C:\Users\Desktop\work;;.]
Jul 09, 2019 9:33:57 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Jul 09, 2019 9:33:57 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Jul 09, 2019 9:33:57 PM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [3,690] milliseconds
Jul 09, 2019 9:33:57 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
Jul 09, 2019 9:33:57 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.21]
Jul 09, 2019 9:33:58 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Jul 09, 2019 9:33:58 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Jul 09, 2019 9:33:58 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in [287] milliseconds

После запуска Apache я должен увидеть, как Hibernate вставляет таблицу в мою базу данных.

1 Ответ

0 голосов
/ 10 июля 2019

Изменить

props.setProperty(HBM2DDL_AUTO, "update"); 

На

props.setProperty(HBM2DDL_AUTO, "create");
...