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 어노테이션을 사용한다.