Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 노베이스부트캠프
- sqld자격증합격
- java최솟값구하기
- 컴파일
- 코딩부트캠프후기
- java set 출력
- 격파르타합격후기
- java map
- java 자료구조 활용
- 격파르타장점
- 항해99후기
- java알고리즘
- 작은수제거하기
- java map 저장
- java map 출력
- java기본자료형
- 인터프린터언어
- 격파르타비전공자
- java list 저장
- java list 출력
- java알고리즘문제풀이
- java참조자료형
- 격파르타후기
- javaJRE
- java set 저장
- javaJVM
- 프로그래머스
- 항해15기
- 프로그래머스제일작은수
- 비전공자sqld
Archives
- Today
- Total
코딩과 결혼합니다
230704 - annotation 정리 (회원 가입 구현) 본문
728x90
@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "users")
public class User {
@Id
@GeneratedValue(Strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private UserRoleEnum role;
}
@Entity
@어노테이션을 클래스에 선언하면 그 클래스는 JPA가 관리한다. 그러므로 DB의 테이블과 Class와 맵핑한다면 반드시
@Entity를 붙여주어야 한다.
@Table
맵핑할 테이블을 지정한다.
name : 매핑할 테이블의 이름을 지정
catalog : DB의 catalog를 맵핑
schema : DB 스키마와 맵핑
uniqueConstraint : DDL 쿼리를 작성할 때 제약 조건을 생성
@Id
해당 프로퍼티가 테이블의 primary key(주 키) 역할을 한다는 것을 나타낸다.
@GeneratedValue
primary key 값을 위한 자동 생성 전략을 명시하는데 사용한다.
AUTO : (persistence provider가) 특정 DB에 맞게 자동 선택
데이터베이스 벤더에 의존하지 않고, 데이터베이스는 기본키를 할당하는 벙법- 데이터베이스에 따라서 IDENTITY, SEQUENCE, TABLE 방법 중 하나를 자동으로 선택해주는 방법이다.- 예를들어, Oracle일 경우 SEQUENCE를 자동으로 선택해서 사용합니다. 따라서, 데이터베이스를 변경해도 코드를 수정할 필요가 없다.
IDENTITY : DB의 identity 컬럼을 이용
기본 키 생성을 데이터베이스에 위임하는 방법 (데이터베이스에 의존적) - 주로 MySQL, PostgresSQL, SQL Server, DB2에서 사용한다.
SEQUENCE : DB의 시퀀스 컬럼을 이용
데이터베이스 시퀀스를 사용해서 기본 키를 할당하는 방법 (데이터베이스에 의존적) - 주로 시퀀스를 지원하는 Oracle, PostgresSQL, DB2, H2에서 사용한다. - @SequenceGenerator를 사용하여 시퀀스 생성기를 등록하고, 실제 데이터베이스의 생성될 시퀀스이름을 지정해줘야 한다.
TABLE : 유일성이 보장된 데이터베이스 테이블을 이용
키 생성 테이블을 사용하는 방법- 키 생성 전용 테이블을 하나 만들고 여기에 이름과 값으로 사용할 컬럼을 만드는 방법이다.- 테이블을 사용하므로, 데이터베이스 벤더에 상관없이 모든 데이터베이스에 적용이 가능하다.postgres를 이용하여 테스트해보면 AUTO와 SEQUENCE는 실제 INSERT 쿼리가 일어나기 전에 다음 쿼리를 통해서 주키를 가져오는 것을 확인할 수 있다.
select nextval ('hibernate_sequence')
@Column
객체 필드와 DB 테이블 컬럼을 맵핑한다.
name : 맵핑할 테이블의 컬럼 이름을 지정
insertable : 엔티티 저장시 선언된 필드도 같이 저장
updateable : 엔티티 수정시 이 필드를 함께 수정
table : 지정한 필드를 다른 테이블에 맵핑
nullable : NULL을 허용할지, 허용하지 않을지 결정
unique : 제약조건을 걸 때 사용
columnDefinition : DB 컬럼 정보를 직접적으로 지정할 때 사용
length : varchar의 길이를 조정합니다. 기본값으로 255가 입력
precsion, scale : BigInteger, BigDecimal 타입에서 사용, 각각 소수점 포함 자리수, 소수의 자리수를 의미
Lombok
@Getter , @Setter
getter() setter() 메소드를 생성
@NorgsConstructor
파라미터가 없는 기본 생성자 생성
@AllArgsConstructor
모든 필드 값을 파라미터로 받는 생성자를 만들어 준다.
@RequiredArgsConstructor
final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어 준다.
DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다.
'2세 > Spring' 카테고리의 다른 글
230705 - Spring 필터 적용 코드 분석 (0) | 2023.07.05 |
---|---|
Spring 회원 가입 구현과 에러 잔치^^ (0) | 2023.07.05 |
230703 - Bean 수동 등록 (1) | 2023.07.03 |
(WIL) 230702 - DI, IoC, Bean (0) | 2023.07.03 |
230701 - Bean, Util Class, Enum (0) | 2023.07.01 |