Java/Spring - JPA

Drumj·2022년 5월 25일
0

Java/Spring

목록 보기
3/4

JAP 알아보기

JPA는, SQL을 쓰지 않고 데이터를 생성,조회,수정,삭제 할 수 있도록 해주는 번역기이다.

JPA를 사용하기 위해서는 build.gradle - dependencies 에
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
를 작성해주면 되지만 나는 프로젝트를 생성할 때 JPA를 포함시켰기 때문에 따로 작성하지 않아도 있더라.


테이블 만들기

@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냅니다.
public class Course {

    @Id // ID 값, Primary Key로 사용하겠다는 뜻입니다.
    @GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가 명령입니다.
    private Long id;

    @Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함을 나타냅니다.
    private String title;

    @Column(nullable = false)
    private String tutor;
		
	//Getter 만 설정.
    //Setter 는 나중에 Repository 에서 자동으로 해주기 때문에 여기서 설정 하지 않음.
    public String getTitle() {
        return this.title;
    }

    public String getTutor() {
        return this.tutor;
    }
		
		//생성자
    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
}

Class 이름은 본인이 만들고 싶은 테이블 명으로 만들어 주면 된다. 필드들은 @Column으로 나타내는 것 같고 필드명은 private String title; 에서 title 부분이기 때문에 원하는 이름으로 만들어 주면 된다.

이렇게 하면 Course란 이름의 테이블에 title과 tutor 2개의 필드를 가진 데이터베이스가 만들어진다.

뒤에 더 공부하고 나서 안 사실인데 이 뒤에 Lombok 이란 것을 배우면 중간에 Getter 부분은 작성해주지 않아도 된다;;; 롬복 최고~


CRUD

  • 데이터 저장, 조회 (Create, Read)
repository.save(); //저장
repository.findAll(); //전체 찾기

예제 코드를 살펴보자

// 데이터 저장하기
repository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));

// 데이터 전부 조회하기
List<Course> courseList = repository.findAll();
for (int i=0; i<courseList.size(); i++) {
    Course course = courseList.get(i);
    System.out.println(course.getId());
    System.out.println(course.getTitle());
    System.out.println(course.getTutor());
}

// 데이터 하나 조회하기
Course course = repository.findById(1L).orElseThrow(
        () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);

위 코드에서 젤 먼저 .save()로 데이터를 저장하고, findAll() 로 전체 조회 후 for 문으로 Id,title,tutor 하나씩 보여주는 코드 짜기. 또 밑에 findById()는 Id 값으로 데이터를 조회하는 건데

처음에 Id를 Long 타입으로 넣었기 때문에 1L로 작성해준 것이다.


  • 데이터 변경, 삭제 (Update, Delete)
    변경과 삭제는 아주 간단하다. 코드를 보면 바로 이해가 된다.
@Bean
public CommandLineRunner demo(CourseRepository courseRepository, CourseService courseService) {
    return (args) -> {
        courseRepository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));

        System.out.println("데이터 인쇄");
        List<Course> courseList = courseRepository.findAll();
        for (int i=0; i<courseList.size(); i++) {
            Course course = courseList.get(i);
            System.out.println(course.getId());
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
        }

        Course new_course = new Course("웹개발의 봄, Spring", "임민영");
        courseService.update(1L, new_course);
        courseList = courseRepository.findAll();
        for (int i=0; i<courseList.size(); i++) {
            Course course = courseList.get(i);
            System.out.println(course.getId());
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
        }
    };
}

먼저 .save로 데이터를 하나 입력하고 잘 입력되었는지 조회해본다.
그러면 ‘프론트엔드의 꽃, 리액트’ 라는 것이 저장되었다라고 출력 될 것이다.
그 후 밑에 코드에서 new_course 를 만들어서 데이터를 입력!

.update() 에서 → (1L = 1번째 Id , new_course = 바로 윗 줄에서 작성한 새로운 데이터)
그리고 업데이트가 잘 되었는지 조회를 해본다.

이 부분도 뒤에 Dto를 배우면 수정하게 된다. 일단 코드를 자세히 한 번 보자!

그리고 Delete는 말도 안 나올 만큼 쉬워버린다.

courseRepository.deleteAll();

이 한줄을 작성해주면 course에 있는 데이터들이 다 사라진다.
.deleteAll() 말고 다른 걸 사용해서 하나만 지우는 것도 가능!


사실 Update,Delete사이에는 Service 라는 것을 알아야 하는데
지금 몇 번 보고 있는데도 정확하게 모르겠다;;;

나중에 다시 공부해서 꼭 올려보도록 하겠다!!!

0개의 댓글