<?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>
그대로 복사 붙이기
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 설치 끝!
private Long id;
String → Long 으로 변경,
constructor 및 Getter, Setter도 Long으로 변경해야한다.
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();
}
}
}
코드 변경
jpa를 testdb
로 변경
MySQL 8.0 Command Line Client에서 create database testdb;
입력
show databases
를 하면 testdb가 생성됐음을 알 수 있다!
문제 발생!
Book.java에서 @GeneratedValue(strategy = GenerationType.IDENTITY)
추가
AppWithMySQL.java
재실행
auto_increment
확인이 가능하다!
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인 객체가 삭제되었다.