복붙노트

[SPRING] MySQL 데이터베이스와 JPA에서 Spring Boot를 사용하는 방법?

SPRING

MySQL 데이터베이스와 JPA에서 Spring Boot를 사용하는 방법?

MySQL과 JPA로 Spring Boot를 설정하고 싶습니다. 이를 위해 나는 다음을 창조한다 : 사람

package domain;

import javax.persistence.*;

@Entity
@Table(name = "person")
public class Person {

@Id
@GeneratedValue
private Long id;

@Column(nullable = false)
private String firstName;

// setters and getters
}

PersonRepository

package repository;

import domain.Person;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository;


public interface PersonRepository extends CrudRepository<Person, Long> {

Page<Person> findAll(Pageable pageable);
}

사람 컨트롤러

package controller;

import domain.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import repository.PersonRepository;

@Controller
public class PersonController {

@Autowired
private PersonRepository personRepository;

@RequestMapping("/")
@ResponseBody
public String test() {
    Person person = new Person();
    person.setFirstName("First");
    person.setLastName("Test");
    personRepository.save(person);
    return "hello";
}
}

시작 클래스 예 :

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Example {

public static void main(String[] args) throws Exception {
    SpringApplication.run(Example.class, args);
}

}

그리고 데이터베이스 구성을 위해 application.properties를 만듭니다.

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.globally_quoted_identifiers=true

spring.datasource.url=jdbc:mysql://localhost/test_spring_boot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver

그래서 프로젝트 구조가 있습니다.

그러나 결과적으로 예외가 있습니다.

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [Example]; nested exception is java.io.FileNotFoundException: class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist

예를 들어, spring-boot-sample-data-jpa / pom.xml을 사용합니다.

해결법

  1. ==============================

    1.당신처럼 프로젝트를 만들었습니다. 구조는 다음과 같습니다.

    당신처럼 프로젝트를 만들었습니다. 구조는 다음과 같습니다.

    수업은 당신의 복사본을 붙여 넣기 만하면됩니다.

    application.properties를 다음과 같이 변경했습니다.

    spring.datasource.url=jdbc:mysql://localhost/testproject
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.jpa.hibernate.ddl-auto=update
    

    하지만 당신의 문제는 pom.xml에 있다고 생각합니다.

    <?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
    </parent>
    
    <artifactId>spring-boot-sample-jpa</artifactId>
    <name>Spring Boot JPA Sample</name>
    <description>Spring Boot JPA Sample</description>
    
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

    이 파일에서 차이점을 확인하십시오. 희망이 도움이

    업데이트 1 : 사용자 이름을 변경했습니다. 예제 링크는 이제 https://github.com/Yannic92/stackOverflowExamples/tree/master/SpringBoot/MySQL입니다.

  2. ==============================

    2.저장소를 리포지토리, 컨트롤러, 도메인과 같은 특정 패키지로 옮길 때 일반적인 @SpringBootApplication만으로는 충분하지 않습니다.

    저장소를 리포지토리, 컨트롤러, 도메인과 같은 특정 패키지로 옮길 때 일반적인 @SpringBootApplication만으로는 충분하지 않습니다.

    구성 요소 검사를위한 기본 패키지를 지정해야합니다.

    @ComponentScan("base_package")
    

    JPA의 경우

    @EnableJpaRepositories(basePackages = "repository")
    

    스프링 데이터가 저장소 인터페이스를 조사 할 위치를 알 수 있도록합니다.

  3. ==============================

    3.스프링 부트 레퍼런스에서, 그것은 말했다 :

    스프링 부트 레퍼런스에서, 그것은 말했다 :

    com
     +- example
         +- myproject
             +- Application.java
             |
             +- domain
             |   +- Customer.java
             |   +- CustomerRepository.java
             |
             +- service
             |   +- CustomerService.java
             |
             +- web
                 +- CustomerController.java
    

    당신의 경우. @SpringBootApplication 주석처럼 @SpringBootApplication 주석에 scanBasePackages를 추가해야합니다 (scanBasePackages = { "domain", "contorller"..}).

  4. ==============================

    4.Application.java를 java 아래의 폴더로 이동할 수 있습니다.

    Application.java를 java 아래의 폴더로 이동할 수 있습니다.

  5. from https://stackoverflow.com/questions/27981789/how-to-use-spring-boot-with-mysql-database-and-jpa by cc-by-sa and MIT license