일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 자바
- spring #entity #자바스프링 #스프링기초 #엔티티
- Spring
- 프런트앤드
- 1:1연관관계
- java Throwable
- webpack 설정
- springboot
- 엔티티 기본 리스너
- react export
- react export default
- entity jpa Listener
- java
- 영카드만사용하기
- 스프링
- vscode snippets
- jpaRelationship
- 엔티티리슨너
- webpack
- react 기본문법
- vscode 자동완성
- ERD #spring #spring-boot
- oneOnOneRelationship
- 이에스린트
- 자바기본
- 초보홈페이지
- 초보홈페이지도전기
- 스프링부트
- 스택틱
- js slider
- Today
- Total
디자인너 코딩하기
Entity 본문
Entity는 도메인 객체를 말한다.
스프링에서 Entity 객체로 만들어 주는 방법은 @Entity 넣어주면 된다.
그럼 스프링이 Entity로 자동 관리 해준다.
주의 할 사항은 @Entity를 넣어주면 레코드를 유일하게 식별해주는 PK(Primary Key)가 반드시 만들어야 줘야 하고
그 방법은 PK해당 필드에 @Id, @GeneratedValue를 넣어주면 된다.
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
}
@GeneratedValue strategy() 옵셥
디폴드로 AUTO로 되어 있다. 생략가능
IDENTITY
- my-sql 디비에서 사용하는 전략 가장 많이 사용
- 트랜지션이 종료되기 전에 Insert문이 실행 되어 아이디 값은 사전에 받아온다.
- 커밋되지 않아도 아이디 값을 받아와서 빈 아이디 값이 증가한다
SEQUENCE
- SEQUENCE함수를 제공하는 Oracle, postgre, H2 등에 사용
TABLE
- 디비에 상관없이 아이디값을 관리하는 Table를 만들어 관리
AUTO
- 각 디비에 적합한 값을 자동으로 넘겨준다.
@Table
스프링이 자동으로 클래스 이름으로 디비와 1:1 매칭시키지만
테이블의 이름이나 카달로그 스키마를 변경할 때 사용(이전작업 및 마이그레이션)
@Entity
@Table(name = "user")
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
}
@Entity
@Table(name = "user", indexes = {@Index(columnList = "name")}, uniqueConstraints = {@UniqueConstraint(columnNames = {"email"})})
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
@Column(unique = true)
private String email;
}
실제로 사용과 다를 수 있다 보통 제약사항은 디비에 맡기고 사용하지 않는다
@Column(name="변경할 이름")
필드에 이름을 지정하는 어노테이션
사용하면 가독성이 떨어진다
@Entity
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
@Column(name="em")
private String email;
}
@Column(nullable = false) → 필드의 값을 not null 값으로 만들어 준다
테스트용으로 많이 사용함
@Entity
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
@Column(nullable = false)
private String email;
}
@Column(updatable = false) → 업데이트(수정)할 때는 사용하지 않는 필드
@Column(insertable = false) → 생성(입력)할 때는 사용하지 않는 필드
@Entity
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
@Column(nullable = false)
private String email;
@Column(updatable = false)
private LocalDateTime createdAt;
@Column(insertable = false)
private LocalDateTime updatedAt;
}
@Transient 테스트 등의 용도로 DB에 반영되지 않는다
@Entity
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
@Transient
private String testField;
}
@Enumerated(value = EnumType.STRING)
enum를 사용시 ORDINAL(제로베이스 넘버타입)이므로 enum에 필드가 추가 되면 예상하지 못한 값으로 출력하므로
반드시 STRING으로 한다
@Entity
public class User_01 {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
@Enumerated(value = EnumType.STRING)
private Gender gender;
}
'spring > Entity' 카테고리의 다른 글
SprignBoot H2DB 설정 (0) | 2022.04.21 |
---|---|
Entity Listener - ② (0) | 2022.04.19 |
Entity Listener - ① (0) | 2022.04.19 |