인프런 커뮤니티 질문&답변

SWP님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

동적 쿼리를 이용해서 엔티티를 모르는 DB에 접근해 결과를 뽑아낼 수 있을까요?

해결된 질문

작성

·

337

0

안녕하세요 스프링 기초부터 활용편까지 유익하게 듣고 있습니다.

강의를 수강하면서 토이 프로젝트를 만들어보고 싶은데, 동적 쿼리나 JPA에 익숙하지 않다보니 궁금한게 많습니다.

그래서 강의내용과 직접적인 연관이 없음에도 강사님이 전문가이시니 이렇게 질문 드립니다.

활용편에서는 DB와 스프링 프로젝트를 연결하고, 스프링에 엔티티를 만들고, 그 엔티티를 기반으로 DB에 테이블이 생성되고 연결되는 구조로 어플리케이션이 만들어졌습니다. 

그런데 DB에 테이블이 이미 생성되어 있거나 테이블 구조가 바뀔수 있다고 할 때(테이블 Column이 바뀌거나, 테이블이 추가되는 경우 등)에도 JPA 개념으로 테이블을 객체로 가져와 결과를 뽑아내거나 join을 하거나 하는게 가능할까요?

엔티티의 멤버변수를 기반으로 DB 테이블 column을 만들다보니 스프링에 엔티티가 정의되어 있지 않거나 내용이 달라지면 안되겠지만, 혹시 방법이 있을까요?

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 박상원님^^ 좋은 질문입니다.

DB에 테이블이 이미 생성되어 있거나 테이블 구조가 바뀌면, JPA의 엔티티도 해당 테이블에 맞추어서 매핑을 변경해야 합니다.

예를 들어서 DB에 컬럼을 추가해야 하면 먼저 DB에 컬럼을 추가해둡니다. JPA는 해당 컬럼을 사용하지 않기 때문에 컬럼을 추가한 시점에는 아무런 문제가 없습니다. 이후 엔티티에도 해당 컬럼을 추가하고 애플리케이션을 다시 배포해야 합니다.

그리고 이런 작업들은 매우 조심히 이루어져야 합니다. 잘못하면 바로 장애로 이어질 수 있습니다^^!

(역시 DB 데이터 마이그레이션 하는게 세상에서 가장 힘든 작업입니다. ㅎㅎ)

감사합니다^^

0

SWP님의 프로필 이미지
SWP
질문자

늦은 시간이었는데.. 답변 감사합니다!

SWP님의 프로필 이미지

작성한 질문수

질문하기