본문 바로가기
Backend - Java Spring/JPA 기초와 원리

[JPA] 실습

by VictorMeredith 2024. 2. 21.

1. 객체와 Table 매핑

- application.properties

 

- Member(엔티티) : @Column의 옵션 name으로 이름을 지정해줄 수 있다.

이렇게 하면 자동생성

 

- resources/data.sql

 

- h2.console

 

- 세팅완료!

 

2. 상세

- @Entity : 이 클래스를 테이블과 매핑한다고 JPA에게 알려준다. (이를 엔티티 클래스라고 한다.)

- @Table : 엔티티클래스에 매핑할 테이블 정보를 알려준다. 생략하면 클래스 이름을 테이블 이름으로 매핑한다.

- @Id : PK에 해당한다. 식별자 필드라고 한다.

- @Column : 컬럼에 매핑한다. 생략이 가능하다. 생략하면 필드명이 컬럼명이 된다.

- 대소문자를 구분하지 않는 DB를 사용하면 명시적으로 매핑해야 한다.

 

persistence.xml

- 현대적인 SpringBoot 환경에서 persistence.xml 파일은 필요하지 않다.

- 설정은 모두 application.properties 에서 가능하다.

 

EntityManagerFactory

- 현대적인 SpringBoot 환경에서 별도의 생성/설정 코드가 필요하지 않다.

- 스프링이 자동으로 생성하고 컨테이너에서 관리하기 때문

- @PersistenceContext 를 통해 직접 주입받아서 사용할 수 있다.

- 보통 JpaRepository나 CrudRepository 인터페이스를 사용하면 된다.

 

현대적인 SpringBoot 코드

- em.persist(member) 와 같은 영속화 코드는 현대 SpringBoot에서는 사용하지 않는다.

- JpaRepository 인터페이스에서 제공하는 Repository.save(member); 와 같은 코드로 사용한다.

- .save() 메서드는 member가 null이면 새로 생성하는 persist 연산을 수행하고, 존재한다면 merge 연산을 수행한다.

Repository 인터페이스 사용
.save 메서드

 

- JPA에서는 단순히 엔티티 값만 변경하더라도 어떤 엔티티가 변경되었는지 추적하는 기능을 가지고 있다.

- 그래서 member.setAge(30) 같이 단순 엔티티만 변경해도 추적해서 알아서 update를 수행한다.

- 이는 영속성과 관련이 있다.

 

- Spring 환경에서는 @Transaction 환경 내에서만 동작한다.

- 잘 바뀌었다.

 

- delete와 findById 등 메서드가 많다. 

다양한 JpaRepository 인터페이스의 메서드

 

'Backend - Java Spring > JPA 기초와 원리' 카테고리의 다른 글

[JPA] JPA  (0) 2024.02.21

댓글