자바/JPA

JPA 의 기초(CRUD) 다루어보기

류창 2022. 1. 7. 00:12
반응형

 

시작하기에앞서서 :

JPA를 다루기 앞서  

사용할 JPA와 데이터베이스를 준비해야한다. 

 

 

 

데이터베이스로는 가볍고 쓰기편한 H2데이터베이스를 사용했다.

 

1. 외부라이브러리 다운받기

 

Maven으로 생성할때  hibernate(JPA)와 h2 데이터베이스를 의존시키자.

 

Gradle, Maven 둘다 

start.spring.io 사이트를 통해서  JPA와 h2라이브러리를 추가해서 생성하면 편하다.

 

https://start.spring.io/

 

2. DB설정하기

 

Resources-> META-INF -> persistence.xml을 생성해서  설정을해줘야한다.

 

필수 속성은  Driver , user, password ,url 을 넣어주자.

JPA-DB를 연결해줄 필수속성이 있어야 연결이된다.

 

5번째에  dialect 기능은  우리가 JPA의 기술을쓰면 자동으로 H2에서 쓰는 언어로 치환해주는 기능이다.

MYSQL, ORACLE  dialect도 지원하니 꼭 들어가야한다.

 

H2 DB를 실행하여 속성을 똑같이 맞춰주어야한다.

 

 

 

JPA와 H2 데이터베이스가 준비되었으니  기본 CRUD를 실행해보겠다.

 

 

 

테스트로 데이터를 넣어볼 Member 클래스를 만들어보겠다.

 

 

@Entity 라는건  DB에 넘길 데이터 객체라는걸 선언하는거다.

EntityManager가 이 어노테이션을보고 인식한다.

 

@ID는  DB에서 사용하는 PK속성을 맞춰주듯이 자바에서 똑같이 맞춰주는용도다.  id에다 @ID속성을 부여했다.

 

 

준비가 모두 맞췄으니 JPA의 간단한 CRUD를 테스트해보자.

 

 

 

1. CREAT - 데이터 주입하기

 

본격적으로 JPA를 체험해보자

 

1.EntityManagerFactory를 생성하고  아까 설정해둔, persistance.xml의 설정을 가져온다.

 

2.Factory에서 EntityManager를 하나 생성한다.

 

3. EntityManager에서  Transaction을 가져온다. 

-> 이 Transaction이 있어야 SQL전송이가능하다.

 

4.tx를 시작한다.

 

------------------------------------------------------------------------------

5. 시험으로 새로운 Member를 작성한뒤,  member id와 이름을 설정한다.

 

6. persist()로 영속성을 부여한다

------------------------------------------------------------------------------

7. commit()을 보낸다.  커밋을 보내야 JPA가 DB로 SQL을 날린다.

 

8. 사용을 완료했으면 em 과 emf를 닫아준다.

 

 

그렇다면 DB엔 데이터가 잘 적용이되엇을까?

 

 

놀랍게도 제대로 실행이 되어서 저장이되어있다!

 

단순한 SQL작업은 이렇게 SQL작성없이 주입이 가능하다.

 

 

2.READ - 데이터 조회하기

 

데이터를 찾으려면 find() 메소드로 찾으면된다.

 

찾으려는 Entity 클래스와  @ID로 설정한 고유한 값을 통해 찾는다.

 

실행해보겠다.

 

 

JPA가 알아서 SQL을 작성한뒤 찾아주었다!!

 

고유번호 1번의 HelloJPA 데이터가 잘 출력되었다

 

 

3.Update - 데이터 업데이트하기

 

데이터를 업데이트하려면 조회한뒤,  데이터값만 바꿔주면

 

놀랍게도 JPA가 알아서 DB에다가 업데이트를해준다. 실행해보겠다

 

실행된 쿼리문이다. 조회와 업데이트문을 자동으로 생성해주었다.

 

 

DB에 새로운 이름을 업데이트를 해주었다.

 

4.DELETE- 데이터삭제하기

 

삭제역시 간단하다. 

 

삭제할 데이터를 조회한뒤  remove()명령을 내리면된다.

 

실행해보자

 

조회문과 삭제 SQL이 일어났다.

 

 

제대로 사라진게 보인다.

 

 

 

 

---------------------------------------------------------------------------------------------------------------

 

JPA를 사용하면 이렇게 간단한 CRUD작업은 SQL문을 사용하지않고도 DB를 관리할수가있다.

 

물론 복잡한 조회문을 사용하려면 JPQL (JAVA Persistence Query Language)가 필요하다.

 

JPQL을 사용한 조회문은 어쩔수없이 SQL문을 작성을해야하긴하지만, 

 

단순반복인 CRUD작업을 간단한 메서드로 행할수있다는게 매우 큰 장점으로 와닿는다.

반응형

'자바 > JPA' 카테고리의 다른 글

JPA 값타입  (0) 2022.06.27
JPA : 상속관계 매핑  (0) 2022.06.15
JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M)  (0) 2022.06.14
JPA: 엔티티(Entity) 매핑  (0) 2022.06.14
스프링: 왜 JPA를 쓰는가?  (0) 2022.01.05