@Entity
@Entity 어노테이션은 데이타베이스의 테이블과 일대일 매칭되는 객체단위이며 객체의 인스턴스 하나가 테이블에서 하나의 레코드값을 의미한다.
그래서 객체의 인스턴스를 구분하기위해 유일한 키값을 가지는데 이것이 테이블상의 PK와 같은 의미를 가지며 @Id어노테이션으로 표기된다.
@Table 의 name 속성을 이용해 데이타베이스상의 실제 테이블 명칭을 작성해준다.
제약사항
- 필드에 final, enum, interface, class를 사용할 수 없다.
- 생성자중 기본 생성자가 반드시 필요하다.
@Entity
@Table(name= "test")
public class test {
...
}
@Colunm
테이블의 컬럼값을 나타내며 굳이 선언하지 않더라도 해당 클래스의 필드는 모두 컬럼이 됨
사용하는 이유는 기본값 외에 추가로 변경이 필요한 옵션이 있을경우 사용
속성
@Column의 속성
1. name : 맵핑할 테이블의 컬럼 이름을 지정
2. insertable : 엔티티 저장시 선언된 필드도 같이 저장
3. updateable : 엔티티 수정시 이 필드를 함께 수정
4. table : 지정한 필드를 다른 테이블에 맵핑
5. nullable : NULL을 허용할지, 허용하지 않을지 결정
6. unique : 제약조건을 걸 때 사용
7. columnDefinition : DB 컬럼 정보를 직접적으로 지정할 때 사용
8. length : varchar의 길이를 조정합니다. 기본값으로 255가 입력
9. precsion, scale : BigInteger, BigDecimal 타입에서 사용, 각각 소수점 포함 자리수, 소수의 자리수를 의미
@Column(length = 100, nullable = false)
private String testColunm;
@Id
해당 테이블의 유일한 값으로 PK필드를 나타낸다.
없는 테이블도 있지만 대부분의 경우 반드시 PK가존재한다.
@Id
@Colunm
private Long no;
@GeneratedValue
PK컬럼의 생성 규칙을 나타냄
PK컬럼의 데이터 형식은 정해져있지 않으나 구분이 가능한 유일한 값을 가지고 있어야 하고 데이터 경합으로 인해 발생되는 데드락 같은 현상을 방지하기위해 대부분 BigInterger 즉 Java의 Long을 주로 사용한다.
대량의 요청이 유입되더라도 중복과 deadlock이 발생되지 않을만큼 키값이 빨리생성이 되고
안전하게 관리가 되어야한다.
deadlock 이란 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다.
출처 및 참고자료
@GeneratedValue 전략
직접 기본키를 생성하는 방법 @Id 어노테이션 만을 사용하여 기본키를 직접 할당해주는 방법이 있다. 기본키를 자동으로 생성하는 방법 4가지 > 기본키를 자동으로 생성할 때에는 @Id와 @GenerratedVa
velog.io
2) 스프링부트로 웹 서비스 출시하기 - 2. SpringBoot & JPA로 간단 API 만들기
이번 시간엔 SpringBoot & JPA로 간단한 API를 만들 예정입니다. Tip) 아직 SI 환경에선 Spring & MyBatis 를 많이 사용하지만, 쿠팡/우아한형제들/NHN Entertainment 등 자사 서비스를 개발하는 곳에선 SpringBoo..
jojoldu.tistory.com
JPA 기본 Annotation 정리
@Entity @Entity 어노테이션은 데이타베이스의 테이블과 일대일로 매칭되는 객체 단위이며 Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미합니다. 그래서 객체의 인스턴스를
www.icatpark.com
잘못된 정보가 있다면 댓글달아주세요.
'Spring > JPA' 카테고리의 다른 글
Fetch Join 별칭에 관하여 (0) | 2023.08.11 |
---|---|
[JPA] @MappedSuperclass (0) | 2022.03.25 |
[JPA] Auditing (0) | 2022.03.24 |