ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JPA 기초
    기타 2024. 8. 20. 23:06
    // WebConfig.java
    
    package com.kh.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    // 3000 포트와 연결하는 webConfig 설정
    @Configuration
    public class WebConfig implements WebMvcConfigurer{
    	
    	@Override
    	public void addCorsMappings(CorsRegistry registry) {
    		registry.addMapping("/**") // 3000 다음에 오는 api url 모두 허용
    				.allowedOrigins("http://localhost:3000") // localhost:3000 주소 접속허용
    				.allowedMethods("GET","POST","PUT","DELETE","OPTIONS") // httpMethod 와 기타 옵션 모두 허용
    				.allowedHeaders("*"); // 데이터, 이미지, 파일 다중파일등 모두 허용
    	}
    }

     

     

    JPA 는 Mybatis 와 다른 점이 크게 mapper , xml 대신 repository 하나가 들어간다.

    그리고 DTO 의 모습도 다르다.

     

    // Chicken.java
    
    package com.kh.dto;
    
    import jakarta.persistence.Entity;
    import jakarta.persistence.GeneratedValue;
    import jakarta.persistence.GenerationType;
    import jakarta.persistence.Id;
    import lombok.Getter;
    import lombok.Setter;
    
    @Entity // MySQL 에 테이블이 존재하지 않으면 테이블 생성
    @Getter
    @Setter // lombok, jakarta 가 나오지 않음 -> build.gradle 에 spring 이나 lombok 관련된 설정이 있는지 확인
    public class Chicken {
    	
    	@Id // primary key
    	@GeneratedValue(strategy = GenerationType.IDENTITY) // Nextval 
    	private int id;
    	private String chickenName;
    	private String description;
    	private double price; // 소수점 고려
    }

     

    @Entity : MySQL 에 테이블이 존재하지 않으면 테이블 생성

    @ID : primary key 지정

    @GeneratedValue(strategy = GenerationType.IDENTITY) : 자동으로 숫자가 오르는 기능 (Nextval, sequence)

     

     

    // ChickenRepository.java
    
    package com.kh.repository;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    import com.kh.dto.Chicken;
    
    // repository 
    // mybatis - mapper 이 두가지를 설정
    
    // @Repository, @Mapper 는 interface 로 시작
    @Repository
    public interface ChickenRepository extends JpaRepository<Chicken, Integer> {
    	// 전체보기 전체넣기 전체수정 전체삭제 와 같은 기본 기능은
    	// JpaRepository 안에 모두 들어있음
    }

     

     

     

    // application.properties
    
    spring.application.name=JPA_chicken
    
    server.port=9090
    
    spring.datasource.url=jdbc:mysql://localhost:3306/KH_WORKBOOK
    spring.datasource.username=root
    spring.datasource.password=kh1234
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    # MySQL 에 자동으로 테이블을 생성해주는 설정
    spring.jpa.hibernate.ddl-auto=update
    
    # SQL 이 자동으로 생성이되고 쿼리가 실행이 잘 되는지 보는 설정
    spring.jpa.show-sql=true
    # JPA 로 만들어진 쿼리가 보임
    
    ### DATA   Language
    
    	# Definition
    ### DDL = CREATE DROP ALTER RENAME TRUNCATE
    
    	# Control, Class, Checked
    ### DCL = GRANT REVOKE
    
    	# Manipulation
    ### DML = INSERT UPDATE DELETE SELECT
    
    	# Query
    ### DQL = SELECT

     

    JPA 실습

     

    Java 백엔드 

    https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken

     

    Springboot-React/JPA_chicken at main · LeePaDack/Springboot-React

    Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.

    github.com

     

     

    React 프론트엔드

    https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store

     

    Springboot-React/chicken-store at main · LeePaDack/Springboot-React

    Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.

    github.com

     

    '기타' 카테고리의 다른 글

    JAR 과 WAR 의 개념과 차이점  (0) 2024.08.27
Designed by Tistory.