DevBoi

[Spring boot] JPA 연동 및 테스트 본문

Develop

[Spring boot] JPA 연동 및 테스트

HiSmith 2021. 7. 9. 00:14
반응형

JPA 설정이 기초적인 부분이 완료되었다.

이제 Entity를 생성하고, 재 부팅 해보자.

JPA는 객체 지향적 ORM 방식으로 개발할수있도록 도와주는 api중하나이다.

개발자가 쿼리보다는 객체에 신경을 쓸수있도록 도와주고, 충분한 학습이 뒷받침 되면, 아주 좋은 성능을 낸다고한다.

 

 

이런식으로 id를 pk로 주고, 재부팅한다,

이렇게 자동적으로 sql에서 생성을 하게된다.

ddl-auto 가 update이기때문에, 해당 컬럼을 추가하게 되면 이렇게 반영이된다.

 

 

@Table ,

Entity 가 기본적으로 이름이 동일한 테이블을 생성 및 찾지만, 특정 테이블 이름과 매핑할수도있다.

 

@Column(name ="???")

동일한 이름이 아닌, 특정 컬럼이름으로 할수있다.

예)

 

아 우선 그전에, 자동 재기동을 applitcation에서 끄고

 

이제 Entity 소통? 관계를 맺는 Repository 를 만들것이다.

Repository 에서는, 기본적으로 Spring 에서 지원해주는 CrudRepo를 상속받아서, Method를 작성한다.

단순히 이름을 룰에 맞춰서 작성할수도있고, 별도 쿼리를 작성할수도있다.

 

자, 이제그러면, Repo를 써보자, 우선 데이터베이스에 가짜 데이터를 insert해놓는다.

 

 

그리고, 아직 구조를 다 짜진 않았으니,

기동할떄, 도는 class에서 테스트를 해보자

성공적으로 뜬다.

 

자, 그러면 여기에서, 궁금한것? 이라기 보다는 확실히 정리 해야될게 한가지 있다.

Repo의 메소드는 그냥... 정해진대로 레퍼런스 보면서 하면 되니까 패스하고

 

@SpringbootApplication 과, @AutoWired에 대한 것이다.

 

@SpringbootApplication의 역할

-> @SpringbootApplication 의 어노테이션은 내부적으로 componentScan을 사용한다.

해당 componetScan의 내용은, 현재 해당 파일이 있는 패키지 하위의 모든 객체들을 Bean등록해주는 것이다.

Bean이 뭔데???? 

가장 기초이지만, Bean에 대해서 잘 모르는 사람들이 많다.

Bean 자바 객체이다. 그러면 Bean = Object? ㄴㄴ 그건 아니다.

Bean이란 스프링 관점에서 보는 객체인데, Spring IOC 컨테이너가, IOC컨테이너를 만들고,

이때 컨테이너를 생성할때 사용할 객체를 찾아서, bean으로 등록.. 미리 컨테이너에 등록해 놓는것이다.

쉽게 말해 컨테이너 내부에서 사용할 객체라고 지정하는 것이 Bean이다.

그래서, Springboot 패키지는 해당 파일의 하위 패키지를 뿌려서 , class파일을 만드는 것이다.

 

 

@AutoWired

이건 뭐임??

AutoWired는 의존관계 주입이다.

bean으로 등록되어있는 다른 것들, 쉽게말하면.. Service에서 다른 Repo를 AutoWired할때,

아니면 뭐 다른 쪽의 빈을 사용할때, 해당 컨테이너에 올라가 있는 녀석을 데리고 생성하는것이다.

즉, 빈에서 빈의 의존을 주입받는것이다. 컨테이너에 올라가있는 빈을 가져와서, 올라가있는 그녀석 쓸꺼야,

이런식이고,

 

AutoWired 는 private선언 및 생성자에서 this.repo = repo 와 동일하다고 보면된다.

 

자 그러면, 다음에는 service와 repo를 이용해서, 하나의 회원 가입 흐름을 만들어보자

반응형