본문 바로가기
spring boot

spring boot JPA

by improve 2024. 3. 5.

 

파일을 만들어준다.

 

데이터베이스를 연결 참고 

https://pcm9881.tistory.com/130

 

[Spring] MySQL 연동 (JPA, application.properties)

# Spring DataSource (MySQL) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스명?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=아이디 sp

pcm9881.tistory.com

 

 

package 형식을 이렇게 만들어 준다.

 

 

●application.properties

#db 연결구문을 넣어주면 자동으로 연결시켜준다.

# Spring DataSource (MySQL)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mh?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234

# Spring JPA  select insert delete update 를 자동으로 만들어준다
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.defer-datasource-initialization=true

# User 클래스...  -> create table 시작 table 종료 하면 자동으로 사라진다.
spring.jpa.hibernate.ddl-auto=create-drop    

# ddl create table  데이터 디파인 렝기지
# dml select insert delete update
spring.jpa.generate-ddl=true

# 생성되는 sql 구문 보여주겠다
spring.jpa.show-sql=true
# 예쁘게 보여주겠다.
spring.jpa.properties.hibernate.format_sql=true

# sql 구문을 날려줘서 데이터로 들어가게 해준다.
spring.sql.init.mode=always



Mysql 데이터 소스를 만들어 준다.

데이터베이스 명을 적어주면 그 데이터베이스로 들어 간다.

ddl Auto = create drop 는 실행하면 자동으로 테이블을 만들어 주고 종료하면 자동으로 테이블을 없애 준다.

 

 

●data.sql 파일로 만들어 준다.

INSERT INTO member (`id`, `email`, `username`) VALUES (1, 'aaa@naver.com', '홍길동');
INSERT INTO member (`id`, `email`, `username`) VALUES (2, 'bbb@naver.com', '박길동');

 

insert 값을 적어준다.

 

●member.Member

package com.mh.restapi02.member;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Entity // create table 을 날려준다.(jpa)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Member {
    // 기본키를 무조건 설정 해줘야 한다.
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private  Long id;

    private String username;
    private String email;
}

@Data 는 getter setter 를 포함한 어노테이션 

@Entity는 jpa에서 create table을 날려주는 어노테이션 

이걸 쓸려면 무조건 기본키를 설정해줘야 한다.

이렇게 만들어 진다.

 

●member.MemberController

package com.mh.restapi02.member;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequiredArgsConstructor
public class MemberContorller {


    //select .. insert..

    private final MemberRepository memberRepository;

    @GetMapping("member")
    public List<Member> allMember(){
        //select 구문이 실행이 된다.
       List<Member> list =  memberRepository.findAll();
        System.out.println(list);
        return list;
    }
    @PostMapping("member")
    public Member memberSave(String username, String email){
        System.out.println(username);
        System.out.println(email);
        //insert 구문 실행
        Member member = Member.builder()
                .username(username)
                .email(email)
                .build();
        Member dbMember = memberRepository.save(member);
        return dbMember;
    }

    @PutMapping("member")
    public Member update(Long id, String username, String email){
        Member member = Member.builder()
                .id(id)
                .username(username)
                .email(email)
                .build();
        Member dbMember = memberRepository.save(member);
        return dbMember;


    }
    @DeleteMapping("member")
    public String delecte(Long id){
        memberRepository.deleteById(id);
        return "delecte id =" + id;


    }

}

 

@GetMapping을 이용해서 select를 해준다.

List를 이용해서 return list 를 출력값으로 보여준다.

 

@PostMapping을 이용해서 insert를 해준다.

@Builder를 이용한다.

return dbMember를 이용해서 출력값을 해준다.

 

@PutMapping 을 이용해서 update를 해준다.

구조는 insert랑 똑같다.

 

@DeleteMapping을 이용해서 delete를 해준다.

id 칼럼만 없애면 그 행 다 없어진다.

memberRepository.deleteById(id)를 써서 id 칼럼을 없애준다.

 

 

●Main

package com.mh.restapi02;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

import java.util.Arrays;

@SpringBootApplication
public class Restapi02Application {

    public static void main(String[] args) {
    ApplicationContext context = SpringApplication.run(Restapi02Application.class, args);

//     Arrays.stream(context.getBeanDefinitionNames()).forEach(System.out::println);
    }

}

 

●member.MemberRepository

package com.mh.restapi02.member;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MemberRepository extends JpaRepository<Member,Long> {

    //기본적인 CRUD가 생성된다.


}

 

interface를 이용해서 JpaRepository 안에 상속된다.(Member,Long)

 

 

 

 

●PostMan

 

구조는 이렇게 되고 get,post,put,del 을 이용해서 CRUD를 사용한다.

update는 이렇게 써준다.

 

delete는 이렇게 써준다 

이렇게 하면 웹 화면에서도 데이터 베이스 에서도 값이 다 들어가게된다.

 

'spring boot' 카테고리의 다른 글

Spring boot 유효성 검사 / 복사  (0) 2024.03.07
Spring boot JPA(2), 포트 설정  (0) 2024.03.06
spring boot 복습  (0) 2024.03.04
spring boot 입출력 2  (0) 2024.02.27
Spring boot(수업중 내용 입출력)  (0) 2024.02.26