study/Spring boot

JPA와 Entity 기본

올스왑 2021. 3. 24. 23:36

JPA : JAVA Persistence API. ORM(Object Relational Mapping)으로 RDB의 정보를 객체지향으로 활용할 수 있도록 도와주는 도구

JPA는 Object와 RDB를 매핑시켜 데이터를 쉽게 다루는 기술을 제공한다. 쿼리보다 객체를 더 다루기 때문에 프로그래밍에 더 집중할 수 있게 해주는 라이브러리다.

 

JPA를 사용하기 위해 먼저 표기법을 알아야 한다.

  • Camel Case : 첫문자는 소문자, 띄어쓰기 대신 대문자로 표기 - 자바의 변수를 선언할 때 사용 - userId
  • Snake Case : 모두 소문자로 표기, 띄어쓰기는 언더바로 - DB칼럼에 사용 - user_id

표기법을 지켜야 JPA가 매핑시킬 수 있다.

 

Entity : DB의 테이블과 대응되는 JPA의 클래스다. DB Table과 JPA Entity는 같다고 보면 된다.

Entity 클래스 이름은 Upper Camel Case로 작성한다.(첫글자도 대문자)

 

Entity에 사용되는 어노테이션

  • @Entity : 해당 클래스가 Entity임을 선언.
  • @Table : 클래스와 매핑될 실제 DB 테이블의 이름을 명시한다. 만약 테이블 이름과 클래스 이름이 같다면 굳이 선언하지 않아도 매핑된다.
  • @Id : 해당 필드가 Index primary key임을 선언.
  • @Column : 해당 필드와 매핑될 실제 DB Column의 이름을 명시한다. 만약 변수 이름과 컬럼 이름이 같다면 선언하지 않아도 매핑된다.
  • @GeneratedValue : PK에 대한 생성 전략을 제공한다. ex) @GeneratedValue(strategy = GenerationType.IDENTITY)
  • @CreationTimestamp : 엔티티를 생성할 때(insert) 현재시간은 입력해준다.
  • @UpdateTimestamp : 엔티티를 수정할 때(update) 현재시간은 입력해준다.

2021.4.13. 추가

데이터베이스에서 데이터를 꺼내면, 그때마다 해쉬코드 값이 달라진다. 따라서 hashCode(), equals() 메소드를 재정의해서 사용한다. -> 동일한 데이터에 대해 동일한 해쉬코드 값을 갖게 하기위해

이를 위해 롬복의 @EqualsAndHashCode 어노테이션을 사용한다.