JPA

[JPA] DB 저장, 조회, 삭제, 수정하기 DB CRUD

솔솔 2021. 6. 25. 09:57
반응형

안녕하세요 오늘은 JPA로 DB 저장, 조회, 수정, 삭제하기를 포스팅하려고합니다.

2021.06.24 - [JPA] - [JPA] DB 연결 설정 및 DB에 저장하기

 

[JPA] DB 연결 설정 및 DB에 저장하기

2021.06.23 - [JPA] - [JPA] Eclipse로 JPA 프로젝트 생성하기 [JPA] Eclipse로 JPA 프로젝트 생성하기 프로젝트 생성 [Dynamic Web Project] - Next 프로젝트 명 작성 후 Next build path 설정 후 Next 설정 후 F..

ddol.tistory.com

일단 DB 연결하고 그 외의 자잘한 설정들은 이전 글 참조해주세요!

 

DB 저장

저장은 persist를 사용하여 DB에 값을 저장할 수 있습니다.

Member member = new Member();
member.setId(1L);
member.setName("HelloA");
			
// JPA 저장
em.persist(member);

insert문이 생성되고 실행되면서 DB에 저장됩니다.

 

DB 조회

조회는 find를 이용하여 찾아올 수 있습니다.

Member findMember = em.find(Member.class, 1L);	// class, pk명
System.out.println("findMember.id = " + findMember.getId());
System.out.println("findMember.name = " + findMember.getName());

find를 할 경우 select문이 자동 생성되며 그 아래 System.out.println 으로 찍은 로그를 볼 수 있습니다.

 

DB 삭제

삭제는 remove 사용

Member findMember = em.find(Member.class, 1L);

em.remove(findMember);

찾은 값을 그대로 넣어 remove 해주면 아래처럼

find를 통해 값을 조회하고 remove를 통해 해당 값을 삭제해주는 delete문 실행

데이터가 삭제된 것을 DB에서 확인할 수 있습니다.

 

DB 수정

수정은 find 한 값을 set으로 변경해줍니다.

기존의 HelloB의 값을 HelloJPA로 수정하기 위한 작업

Member findMember = em.find(Member.class, 1L);
findMember.setName("HelloJPA");

set을 해주고 따로 저장을 안해도 되는 이유는 transcation commit 하기 전 변경된 내용이 있으면 알아서 update문을 생성해준다고해요!

그럼 이렇게 변경된 내용을 확인할 수 있습니다.

 


** 위닝님이 질문 남겨주셔서 그 답변 남깁니당~~!

 

-> 만약 insert 할 때 원하는 컬럼에만 row를 넣고 싶을 때 JPA는 가능할까?

제가 배운 지식으로는 된다고 생각했지만 혹시나 하는 마음에 테스트 해보았습니다!

 

TEST 라는 테이블을 하나 생성하였고,

ID biginit not null (PK),

NAME varchar,

PHONENO varchar

3개의 컬럼으로 생성했습니다.

Test test = new Test();
test.setId(1L);
test.setName("test");
//set으로 값 설정해도 되고 생성자 만들어서 넣어줘도돼요
			
em.persist(test);

phoneNo의 값을 채우지 않은채 실행해보면

insert문이 성공적으로 날라갑니다!

DB를 확인해보니 값을 채우지않은 phoneNo에는 null이 들어가있는 것을 볼 수 있어요!

 

클래스를 생성해줄 때 JPA가 알아볼 수 있도록 PK이가 뭔지 @Id로 알려주기때문에

PK값을 채우지않고 실행하면 아무일도 일어나지 않습니다!

 

추가로 만약 PK 값이 있는데 다시 insert 할 경우! 오류를 내뱉어줍니다.

 

답변이 되었을지는 모르겠지만 궁금한 점 있음 댓 달아주세용 ^^

 

 

인강으로 공부하면서 작성하는 글로 잘못된 정보가 있을 수도 있습니다! 잘못된 정보가 있을 시 댓글달아주세요 : 0

반응형

'JPA' 카테고리의 다른 글

[JPA] 영속성 컨텍스트 PersistenceContext  (4) 2021.06.29
[JPA] JPQL / 페이징 처리  (0) 2021.06.28
[JPA] DB 연결 설정 및 DB에 저장하기  (0) 2021.06.24
[JPA] Eclipse로 JPA 프로젝트 생성하기  (0) 2021.06.23
JPA 란?  (4) 2021.06.22