mun dev

[Spring] JPA란? 본문

공부/Spring

[Spring] JPA란?

mndev 2023. 3. 19. 14:45

스프링부트 JPA란?


자바와 데이터베이스의 중간단계 역할

 

JPA는 개발자가 직접 작성해야 하는 SQL 쿼리도 자동으로 해주기 때문에 개발 생산성이 매우 높아짐

 

객체를 JPA에 넣으면 중간에 디비에 sql을 보내고 데이터를 가져오고 하는 것을 알아서 처리해준다.

 

JPQL: 테이블을 보고 질의를 날리는 게 아니라 객체를 대상으로 쿼리를 날리면 SQL로 번역됨

 

JPA는 인터페이스고 각 구현체는 여러가지가 있다. 대표적인게 Hibernate

JPA는 객체와 ORM이라고 표현할 수 있는데 ORM은 객체와 관계형디비를 매핑해준다 이때 매핑은 어노테이션을 통해서 한다.

 

 

@Entity

JPA가 관리하는 엔티티가 되는 것

 

@id

얘는 PK이다.

 

@GeneratedValue(strategy=GenerationType.IDENTITY)

쿼리에 id를 넣는게 아니고 디비가 자동으로 id를 생성해주는 것을 보고 identity 전략이라고 부른다.

 

@Column(name=”username”)

디비에 있는 username이라는 컬럼과 매핑됨

 

JPA는 EntityManager로 모든 걸 관리하는데 그래들에서 JPA 라이브러리 받고나면 스프링부트가 자동으로 알아서 엔티티 매니저를 만들어줌

 

⇒ 우리는 그걸로 인젝션만 해주면 됨