스프링 부트(Spring Boot) 엔티티(Entity)

유필선·2024년 6월 30일
1

스프링 부트

목록 보기
4/4

@Entity

@Entity 어노테이션은 JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션이다. 이 어노테이션을 붙임으로써 JPA가 해당 클래스를 관리하게 된다.아래의 코드 결과를 보면 name = "user2"로 함으로써 user2 테이블이 생성된 것을 볼 수 있다.

주의 사항

  • 기본 생성자가 꼭 필요
  • final, enum, interface, inter class에서는 사용 불가
  • 필드(변수)를 final로 선언 불가

@Table

@Table은 엔티티와 매핑할 테이블을 지정
아래 코드 결과를 보면 @Table에 name을 추가하면 테이블 이름이 name값으로 설정이 되고 생략시 Entity 이름으로 테이블이 만들어지는 것을 확인할 수 있다.

@Id

@Id는 특정 속성을 기본키(Primary key)로 설정하는 어노테이션

@Id 어노테이션만 적게될 경우 기본키값을 직접 부여야 줘야함
보통 DB를 설계할 때는 기본키는 직접 부여하지 않고 Mysql AUTO_INCREMENT처럼 ㄱ자동 부여되게끔 한다.
@GeneratedValue 어노테이션을 사용하면 기본값을 DB에서 자동으로 생성하는 전략을 사용할 수 있다.

전략에는 IDENTITY, SEQUENCE, TABLE 3가지가 있다.
AUTO 같은 경우 DB에 따라 전략을 JPA가 자동으로 선택한다. 이로 인해 DB를 변경해도 코드를 수정할 필요 없다는 장점이 있다.

@Column

@Column은 객체 필드를 테이블 컬럼과 매핑한다.
위의 결과는 User 엔티티에 name 컬럼에 "test"를 입력해도 DB에는 값이 들어가지 않는다.
위의 결과는 User 엔티티 name 컬럼에 "test"를 입력하고 "change test"로 변경해도 변경값이 적용되지 않는다.
위의 결과는 nullable true, false에 따라 not null이 적용되는지 여부이다.
위의 결과는 기본키와 같이 같은 컬럼이 중복될 수 없다.

length는 문자길이에 대한 제약을 건다.

Access

@Access는 JPA가 엔티티 데이터에 접근하는 방식을 지정한다.@Access를 설정하지 않으면 기본키를 설정하는 @Id의 위치를 기준으로 접근방식 설정
위 코드처럼 @Id가 필드에 설정되면 @Access(Access(AccessType.FILED)로 설ㅌ정된 아래 코드랑 같다.
아래 처럼 getter에 @Id를 설정함으로 써 프로퍼티 접근으로 할 수 있다. 아래와 같은 경우 @Id가 getter에 위치하므로 @Access를 생략할 수 있다.필드 접근과 프로퍼티 접근을 혼합하여 아래처럼 사용할 수 있다.
getter에 AccessType.PROPERTY를 함으로써 getter의 fullName을 column으로 지정.

profile
이해해버려라!

0개의 댓글