수색…


소개

기본적으로 spring-boot는 H2 데이터베이스를 사용하여 실행됩니다. 이 기사에서는 MySQL 데이터베이스에서 작동하도록 기본 구성을 조정하는 방법을 살펴 보겠습니다.

비고

선행 조건으로, MySQL이 이미 포트 3306에서 실행 중이며 데이터베이스가 생성되었는지 확인하십시오.

MySQL을 사용하는 스프링 부트 샘플

우리는 봄 부츠 및 봄 - 데이터 -JPA에 대한 공식 가이드를 따를 것입니다. 우리는 gradle을 사용하여 응용 프로그램을 빌드 할 것입니다.

  1. gradle 빌드 파일 만들기

    build.gradle

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.3.RELEASE")
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'org.springframework.boot'
    
    jar {
        baseName = 'gs-accessing-data-jpa'
        version =  '0.1.0'
    }
    
    repositories {
        mavenCentral()
        maven { url "https://repository.jboss.org/nexus/content/repositories/releases" }
    }
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
    dependencies {
        compile("org.springframework.boot:spring-boot-starter-data-jpa")
        runtime('mysql:mysql-connector-java')
        testCompile("junit:junit")
    }
    
  1. 고객 엔티티 만들기

    src / main / java / hello / Customer.java

    @Entity
    public class Customer {
    
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
        private String firstName;
        private String lastName;
    
        protected Customer() {}
    
        public Customer(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        @Override
        public String toString() {
            return String.format(
                    "Customer[id=%d, firstName='%s', lastName='%s']",
                    id, firstName, lastName);
        }
    }
    
  1. 리포지토리 만들기

    src / main / java / hello / CustomerRepository.java

    import java.util.List;
    import org.springframework.data.repository.CrudRepository;
    
    public interface CustomerRepository extends CrudRepository<Customer, Long> {
        List<Customer> findByLastName(String lastName);
    }
    
  2. application.properties 파일 만들기

    ################### DataSource Configuration ##########################
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/your_database_name
    jdbc.username=username
    jdbc.password=password
    
    init-db=false
    
    ################### Hibernate Configuration ##########################
    
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    hibernate.show_sql=true
    hibernate.hbm2ddl.auto=update
    
  3. PersistenceConfig.java 파일을 만든다.

5 단계에서 우리는 데이터 소스가 어떻게 로딩 될지와 우리의 어플리케이션이 MySQL에 어떻게 연결되는지를 정의 할 것입니다. 위의 스 니펫은 MySQL에 연결하는 데 필요한 최소한의 구성입니다. 여기서 우리는 두 가지 빈을 제공합니다.

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages="hello")
public class PersistenceConfig 
{
    @Autowired
    private Environment env;
 
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory()
    {
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
 
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
 
        factory.setDataSource(dataSource());
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setPackagesToScan("hello");
 
        Properties jpaProperties = new Properties();
        jpaProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
        factory.setJpaProperties(jpaProperties);
 
        factory.afterPropertiesSet();
        factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());
        return factory;
    }
     
    @Bean
    public DataSource dataSource()
    {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.username"));
        dataSource.setPassword(env.getProperty("jdbc.password"));
        return dataSource;
    }
      
}
  • LocalContainerEntityManagerFactoryBean 이것은 우리에게 EntityManagerFactory 설정에 대한 핸들을 제공하고 우리가 커스터마이징을 할 수있게 해줍니다. 또한 아래와 같이 PersistenceContext를 컴포넌트에 삽입 할 수 있습니다.
@PersistenceContext
private EntityManager em;
  • DataSource 여기서 우리는 DriverManagerDataSource 의 인스턴스를 리턴한다. 이것은 표준 JDBC DataSource 인터페이스의 간단한 구현이며 bean 속성을 통해 일반 오래된 JDBC 드라이버를 구성하고 모든 getConnection 호출에 대해 새 Connection을 리턴합니다. BasicDataSource 와 같은 더 나은 대안이 있으므로 테스트 용도로 엄격하게 사용하는 것이 좋습니다. 자세한 내용은 여기 를 참조하십시오.
  1. 응용 프로그램 클래스 만들기

    src / main / java / hello / Application.java

     @SpringBootApplication
     public class Application {
    
         private static final Logger log = LoggerFactory.getLogger(Application.class);
     
         @Autowired
         private CustomerRepository repository;
     
         public static void main(String[] args) {
             SpringApplication.run(TestCoreApplication.class, args);
         }
     
         @Bean
         public CommandLineRunner demo() {
             return (args) -> {
                 // save a couple of customers
                 repository.save(new Customer("Jack", "Bauer"));
                 repository.save(new Customer("Chloe", "O'Brian"));
                 repository.save(new Customer("Kim", "Bauer"));
                 repository.save(new Customer("David", "Palmer"));
                 repository.save(new Customer("Michelle", "Dessler"));
     
                 // fetch all customers
                 log.info("Customers found with findAll():");
                 log.info("-------------------------------");
                 for (Customer customer : repository.findAll()) {
                     log.info(customer.toString());
                 }
                 log.info("");
     
                 // fetch an individual customer by ID
                 Customer customer = repository.findOne(1L);
                 log.info("Customer found with findOne(1L):");
                 log.info("--------------------------------");
                 log.info(customer.toString());
                 log.info("");
     
                 // fetch customers by last name
                 log.info("Customer found with findByLastName('Bauer'):");
                 log.info("--------------------------------------------");
                 for (Customer bauer : repository.findByLastName("Bauer")) {
                     log.info(bauer.toString());
             }
             log.info("");
         };
     }
    

    }

  2. 응용 프로그램 실행

STS와 같은 IDE를 사용하는 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭 -> Run As -> Gradle (STS) Build ... 작업 목록에서 bootRun 및 Run을 입력하십시오.

명령 줄 에서 gradle을 사용하는 경우 다음과 같이 응용 프로그램을 간단하게 실행할 수 있습니다.

./gradlew bootRun

다음과 같은 내용을보아야합니다.

== Customers found with findAll():
Customer[id=1, firstName='Jack', lastName='Bauer']
Customer[id=2, firstName='Chloe', lastName='O'Brian']
Customer[id=3, firstName='Kim', lastName='Bauer']
Customer[id=4, firstName='David', lastName='Palmer']
Customer[id=5, firstName='Michelle', lastName='Dessler']

== Customer found with findOne(1L):
Customer[id=1, firstName='Jack', lastName='Bauer']

== Customer found with findByLastName('Bauer'):
Customer[id=1, firstName='Jack', lastName='Bauer']
Customer[id=3, firstName='Kim', lastName='Bauer']


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow