[Spring] MySQL 사용해보기

진주·2022년 3월 21일
0

Spring

목록 보기
20/29

1) persistence.xml 코드 수정

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">

    <persistence-unit name="jpa"> <!-- 프로젝트 이름 -->
      <properties>
        <!-- property name -->
        <!-- javax.persistence 로 시작하는 속성들 : JPA 표준 속성 -->
        <!-- hibernate ~ : JPA의 구현체 중 하나인 hibernate의 전용 속성-->

        <!-- DB와 연결하기 위한 필수 속성 -->
        <!-- MySQL 설정 -->
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value="1234"/>
      <!-- DB Dialect(방언) 설정(MySQL) -->
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />


        <!-- 옵션(선택) 속성 -->
        <!-- hibernate의 실행 과정에서 console에 테이블 생성, DDL, DML 등 SQL문을 출력하도록 하는 설정 -->
        <property name ="hibernate.show_sql" value ="true"/>

        <!-- SQL 출력 상태 정렬 -->
        <property name ="hibernate.format_sql" value ="true"/>

        <!-- 주석문도 포함해서 출력하기 -->
        <property name ="hibernate.use_sql_comments" value ="true"/>

        <!-- ***(중요!!)*** 애플리케이션 실행 시 DB테이블을 자동으로 실행할 것인지?? -->
        <!-- create : 기존에 테이블이 존재하면 삭제(drop) 후 새로 생성(create), DROP + CREATE  -->
        <!-- update : DB테이블과 Entity(객체)의 매핑(Mapping) 정보들 비교, 변경된 사항만 수정, 반영 -->
        <property name ="hibernate.hbm2ddl.auto" value ="create"/>

      </properties>
    </persistence-unit>
    
</persistence>

그대로 복사 붙이기


2) MySQL Connector dependency 추가 하기

8.0.28 version 클릭

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>

pom.xml의 <dependencies> 내에 코드 복사 붙여넣기

Now 클릭

👎 제대로 dependency가 설치되지 않았다는 의미이므로,
터미널에 mvn -U clean install 입력

pom.xml 우클릭 - Update Project 클릭

👍 로 변경되었으면 dependency 설치 끝!


Book.java

private Long id;

String → Long 으로 변경,
constructor 및 Getter, Setter도 Long으로 변경해야한다.


App.java 복사 붙인 뒤, 파일명 AppWithMySQL로 변경

package dev.hibernate;

import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

import dev.hibernate.model.Book;

public class AppWithMySQL 
{
    public static void main( String[] args ){

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa"); 
        // persistence.xml의 <persistence-unit name="jpa"> 이므로

        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();

    try{

        tx.begin();
        Book book = new Book();
        book.setBookName("The little prince");
        book.setPubDate(new Date());


        em.persist(book);
        
        // 이 주석 부분은 밑에서 실행해 볼 것
        // book.setBookName("다 큰 왕자");

        // Book findBook = em.find(Book.class, 1L);
        // System.out.println(findBook.getBookName());
        
        // em.remove(findBook);

        tx.commit();

    }catch(Exception e){
        e.printStackTrace();
    }finally{
        em.close();
        emf.close();
    }

    }
}

코드 변경


persistence.xml 코드 변경

jpa를 testdb로 변경


MySQL 8.0 Command Line Client에서 create database testdb; 입력

show databases를 하면 testdb가 생성됐음을 알 수 있다!


AppWithMySQL.java 실행(F5)

문제 발생!

Book.java에서 @GeneratedValue(strategy = GenerationType.IDENTITY) 추가

AppWithMySQL.java 재실행

auto_increment 확인이 가능하다!


DB에 재대로 추가 됐는지 확인하기

1) 모든 DB 조회 : show databases;
2) DB 생성 : create database DB이름;
3) 현재 사용 중인 DB 조회 : select database();
4) 사용할 DB로 변경 : use DB이름;
5) 현재 사용 중인 DB가 갖고 있는 Table 조회 : show tables;
6) Table 정보 조회 : desc Table명
7) Table 데이터 조회 : select * from Table명;

select * from testdb.book;

use testdb 사용해서 testdb로 변경한 뒤, select database() 입력해보기

show tables; 입력

desc book; 입력

select * from book; 입력


나머지 코드도 모두 실행해보기

주석 풀고 결과 확인

select * from book; 결과 = delete까지 수행되어 id=1L인 객체가 삭제되었다.

profile
진주의 코딩일기

0개의 댓글