이숭간 공부기록

JPA란? 본문

공부공부/Spring Boot

JPA란?

이숭간 2021. 3. 19. 11:35
728x90

자바와 데이터베이스의 중간단계역할의 변천과정(?)

순수JDBC -> JDBC템플릿 -> JPA (MyBatis랑 같은선상)

 

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

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

 

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

 

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

 

JPA는 객체와 ORM이라고 표현할수있는데 ORM은 객체와 관계형디비를 매핑해준다는 뜻이다. 

이때 매핑은 어노테이션을 통해서 한다.

 

@Entity

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

 

@Id

얘는 PK다

 

@GneratedValue(strategy = GenerationType.IDENTITY)

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

 

@Column(name = "username")

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

 

JPA는 EntityManager로 모든걸 관리(?)하는데 그래들에서 JPA라이브러리 받고나면 스프링부트가 자동으로 알아서 엔티티매니저를 만들어줌 -> 우리는 그걸로 인젝션만 해주면됨