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
}
Person Repository(개인 저장소)
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);
}
Person Controller(Person Controller)
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을 사용합니다.
나도 너처럼 프로젝트를 만들었어.구조는 이렇습니다.

클래스는 복사하여 붙여넣은 것입니다.
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 입니다.
클래스를 저장소, 컨트롤러, 도메인 등의 특정 패키지로 이동하는 경우 일반 패키지만 해당@SpringBootApplication충분하지 않습니다. 
구성 요소 검색을 위한 기본 패키지를 지정해야 합니다.
@ComponentScan("base_package")
JPA의 경우
@EnableJpaRepositories(basePackages = "repository")
또한 필요하기 때문에 봄 데이터에서는 저장소 인터페이스를 찾는 위치를 알 수 있습니다.
Jpa 기반 응용 프로그램의 경우: 기본 패키지 스캔 @EnableJpaRepository(basePackages = "저장소") 한 번만 사용해 보십시오!!!
 프로젝트 구조
com
 +- stack
     +- app
     |   +- Application.java
     +- controller
     |   +- EmployeeController.java
     +- service
     |   +- EmployeeService.java
     +- repository
     |   +- EmployeeRepository.java
     +- model
     |   +- Employee.java
-pom.xml
dependencies: 
    mysql, lombok, data-jpa
application.properties
#Data source :
spring.datasource.url=jdbc:mysql://localhost:3306/employee?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.generate-ddl=true
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#Jpa/Hibernate :
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto = update
직원.자바
@Entity
@Table (name = "employee")
@Getter
@Setter
public class Employee {
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private Long id;
    @Column (name = "first_name")
    private String firstName;
    @Column (name = "last_name")
    private String lastName;
    @Column (name = "email")
    private String email;
    @Column (name = "phone_number")
    private String phoneNumber;
    @Column (name = "emp_desg")
    private String desgination;
}
Employee Repository.java
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
Employee Controller.java
@RestController
public class EmployeeController {
    @Autowired
    private EmployeeService empService;
    @GetMapping (value = "/employees")
    public List<Employee> getAllEmployee(){
        return empService.getAllEmployees();
    }
    @PostMapping (value = "/employee")
    public ResponseEntity<Employee> addEmp(@RequestBody Employee emp, HttpServletRequest 
                                         request) throws URISyntaxException {
        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(new URI(request.getRequestURI() + "/" + emp.getId()));
        empService.saveEmployee(emp);
        return new ResponseEntity<Employee>(emp, headers, HttpStatus.CREATED);
    }
종업원 서비스자바
public interface EmployeeService {
    public List<Employee> getAllEmployees();
    public Employee saveEmployee(Employee emp);
}
Employee Service Impl.java
@Service
@Transactional
public class EmployeeServiceImpl implements EmployeeService {
    @Autowired
    private EmployeeRepository empRepository;
    @Override
    public List<Employee> getAllEmployees() {
        return empRepository.findAll();
    }
    @Override
    public Employee saveEmployee(Employee emp) {
        return empRepository.save(emp);
    }
}
종업원 어플리케이션자바
@SpringBootApplication
@EnableJpaRepositories(basePackages = "repository")
public class EmployeeApplication {
    public static void main(String[] args) {
        SpringApplication.run(EmployeeApplication.class, args);
    }
}
mysql-connector-java 종속성을 추가하십시오.
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
application.properties에 다음 속성을 추가합니다.
# Data Source properties
spring.datasource.url=jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false
spring.datasource.username=root
spring.datasource.password=YourPassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA properties 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
스프링 부츠 레퍼런스에 이렇게 적혀있었어요
클래스에 패키지 선언이 포함되지 않은 경우 클래스는 "기본 패키지"에 있는 것으로 간주됩니다.일반적으로 "기본 패키지" 사용은 권장되지 않으므로 피해야 합니다.@ComponentScan, @EntityScan 또는 @SpringBootApplication 주석을 사용하는 SpringBoot 어플리케이션에서는 모든 jar의 모든 클래스가 읽히기 때문에 특히 문제가 발생할 수 있습니다.
com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java
당신의 경우.를 추가해야 합니다.scanBasePackages에서@SpringBootApplication주석입니다.같은@SpringBootApplication(scanBasePackages={"domain","contorller"..})
코드는 기본 패키지에 포함되어 있습니다.즉, 커스텀 패키지가 없는 src/main/java의 모든 파일이 소스입니다.패키지 n을 만들고 소스 파일을 그 안에 넣을 것을 강력히 권장합니다.
Ex-
 src->
     main->
          java->
                com.myfirst.example
                   Example.java
                com.myfirst.example.controller
                   PersonController.java
                com.myfirst.example.repository
                  PersonRepository.java
                com.myfirst.example.model
                   Person.java
이것으로 당신의 문제가 해결되기를 바랍니다.
 수 요.Application.javaJava ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」
언급URL : https://stackoverflow.com/questions/27981789/how-to-use-spring-boot-with-mysql-database-and-jpa
'programing' 카테고리의 다른 글
| 확인 이메일의 ASP.NET 핵심 ID 토큰이 잘못되었습니다. (0) | 2023.04.05 | 
|---|---|
| Angular를 사용하여 쿼리 문자열을 구문 분석하는 가장 좋은 방법html5 모드를 사용하지 않는 JS (0) | 2023.04.05 | 
| Wordpress - 코드 조각을 레이아웃의 선택된 부분에 포함시키는 플러그인 (0) | 2023.04.05 | 
| 모든 문자열 속성에서 선행/추적 공백을 잘라내도록 잭슨을 구성할 수 있습니까? (0) | 2023.04.05 | 
| 리액트를 사용하여 HTML 태그에 클래스를 추가하시겠습니까? (0) | 2023.04.05 |