본문 바로가기
Spring

[SpringBoot/IntelliJ] Mysql연동

by noddu 2022. 4. 14.
728x90
반응형

 

runtimeOnly 'mysql:mysql-connector-java'

builder.gadle에 종속성을 추가한다

 

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

JPA도 추가한다

 

 


@Entity
@Table(name="mainproduct")
public class MainBoard {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // PK
    @Column(name="mainProductId")
    private int mainProductId;
    @Column(name = "mainProductTitle")
    private String mainProductTitle;
    @Column(name = "mainProductContent")
    private String mainProductContent;
    @Column(name = "mainProductHit")
    private int mainProductHit;
    @Column(name = "mainProductDate")
    private String mainProductDate;
    @Column(name = "mainProductCategory")
    private String mainProductCategory;

 

Hibernate는 JPA 구현체의 한 종류

 

저장

  • JPA에 객체를 넘긴다
  • Entity를 분석 -> Insert SQL을 생성 -> JDBC API를 사용해 SQL을 DB로

 

조회

  • 객체 pk값을 JPA에 넘긴다
  • Entity분석해 Select SQL을 생성 ->  JDBC API를 사용해 SQL을 DB로 -> DB로부터 결과 받아옴 -> 결과(ResultSet)를 객체에 매핑

 

반응형

private final EntityManager em;

public JpaMainBoardRepository(EntityManager em) {
    this.em = em;
}

따로 Entiry만 관리할 클래스를 만들어서 private final로 선언

 


저장

em.persist(mainBoard);
return mainBoard;


조회

MainBoard mainBoard = em.find(MainBoard.class,mainProductId);
return Optional.ofNullable(mainBoard);

//또는 쿼리 자체로

return em.createQuery("select m from MainBoard m order by m.mainProductId desc", MainBoard.class)   //MainBoard Entity에 query 하는것, m = as m
        .getResultList();


수정 

 

객체를 변경하면 알아서 Update query가 실행

 



삭제

em.remove(mainBoard);
return mainBoard;

 

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:포트/DB테이블?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none

resources -> application.properties에 다음과 같이 작성한다

 


오른쪽 Database를 열어보면 잘 연결되어있다

 

mainProductId 이런식으로 했더니 읽어들이질 못해서

main_product_id로 해서 잘 실행됐다

반응형