Back-end/Spring boot

create data with JPA

Coding Kitsune 2022. 6. 24. 17:40

DB에 데이터를 기록하려면, 서버에서 데이터베이스에 데이터를 저장해달라고

 

말해야하는데, 데이터베이스는 자바를 알지 못한다.

 

이를 위한 도구가 바로 JPA 이다.

 

즉 JPA는 자바언어를 디비가 이해할 수 있게하고,

 

데이터관리에 편리한 여러 기능을 제공한다.

 

 

 

entity -> 자바 객체를 디비가 이해할 수 있게 규격이고,

 

엔티티는 리파지토리라는 일꾼을 통해 DB에 전달되고 처리된다( DB table에 처리).

 

이 과정은 우선,

 

1. dto를 entity로 변환한다.

 

기본 프로젝트 안에 entity패키지를 만들고, 그안에 Article이라는 클래스를 만들어준다.

 

@Entity //DB 가 해당 객체를 인식 가능!

 

엔티티라는 어노테이션을 붙혀줘야 데이터베이스가 해당 객체를 인식가능하다.

 

@Column
private String title;
@Column
private String content;

 

또 이 @Column이라는 어노테이션이 있어야 이 값들이 속성값임을 알 수 있다.

 

또 기본 키값을 보통 id로 잡아주게 되고 

 

@Id // 대표값 지정
@GeneratedValue(strategy = GenerationType.IDENTITY)
private  Long id;
@Column
private String title;
@Column
private String content;

 

최종적으로 아티클 클래스는 이런식으로 형태가 잡히게 된다.

 

생성자 또한 추가 해줘야하지만, 이후 롬복을 통해 간단히 해줄 수 있기에 생략한다.

 

dto 인 아티클 폼안에 toEntity 메서드를 만들어주고, 이는 아티클 타입을 반환한다.

 

 

2. repository에게 entity를 db안에 저장하게 한다.

 

private ArticleRepository articleRepository;

 

기본 프로젝트 패키지에 리파지토리 패키지를 만들어 준뒤,

 

그 안에 ArticleRepository라는 인터페이스를 만들어준다.

 

이 리파지토리를 직접 구현할 수도 있지만, jpa에서 제공하는 리파지토리를 상속받아오는 것이 편하다.

 

Crud리파지토리를 상속받아 사용하자.

 

public interface ArticleRepository extends CrudRepository<Article, Long> {
    @Override
    ArrayList<Article> findAll();
}

 

관리대상 엔티티 => Article,  그 타입을 두번째 인자로 => Long

 

Article saved = articleRepository.save(article);

 

 

그럼 이제 문제 없이 이 리파지토리를 사용할 수 있고, 이를 saved 에 담을 수 있다.