본문 바로가기
  • 마침표 보다 쉼표를 나타내자
프로그래밍/Spring

데이터 베이스 연결

by Y코더 2023. 3. 29.
728x90

이때까지 해오던 방식이 아니고

이 새로운 방법은 마치 마법처럼 연결된다.

 

해오던 방식은 아래와 같다.

자바에서 (이클립스) String으로 쿼리문을 짜서

executeQuery 등으로 쿼리문을 넘겨줘서 값을 찾아 내었지만...

 

이 새로운 방식은

JpaRepository 를 상속 받는 것으로 모든 작업이 끝난다.

JPA는 인터페이스 선언만해도 자동으로 스프링의 빈으로 등록 된다.

( 스프링이 내부적으로 인터페이스 타입에 맞게 객체를 생성하여 빈으로 등록함 )

 

SQP 없이 새롭게 배우는 CRUD에 대해 알아보도록 하자

 

쓰여오던 쿼리문과 비교해서 보도록하자

 

insert 작업 : save(엔티티 객체)

select 작업 : findByld(키타입),  getOne(키 타입)

update 작업 : save(엔티티 객체)

delete 작업 : deleteByld(키타입), delete(엔티티 객체)

 

여기서 한가지 의문점을 가지게 된다.

insert 와 update 는 동일한 메서드 save() 를 이용한다.

이에 대한 이유는 JPA의 구현체가 메모리상 (Entity Manager가 엔티티를 관리하는 방식)

객체를 비교하고 없다면 insert, 있다면 update를 동작 시키는 방식이기 때문이다.

그리하여 수정 작업 또한 등록작업과 동일하게 save()를 이용해서 처리하게 된다.

 

JPA의 특성을 알아야 한다.

엔티티 객체들을 메모리상에 보관하려고 한다.

그리하여 특정한 엔티티 객체가 존재하는 지 확인하는 select 가 먼저 실행 되며

@Id 를 가진 엔티티 객체가 존재한다면 update, 그렇지 않다면 insert를 실행하게 된다.

728x90

'프로그래밍 > Spring' 카테고리의 다른 글

제어문 처리 ( Thymeleaf편 ) - 1 -  (0) 2023.04.03
스프링 내용 정리 - 2 -  (0) 2023.03.31
스프링 내용 정리 - 1 -  (0) 2023.03.29
구문 실행해보기  (0) 2023.03.28
스프링 프로젝트 만들기 (기본적)  (0) 2023.03.28