ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • jpa) DB와 매핑 어노테이션 @Entity, @Table, @Id, @Column
    JAVA/ORM 2024. 5. 14. 18:25

    ▤ 목차

      어노테이션이란?

      자바 컴파일러에게 문법 에러를 체크하도록 정보를 제공하기 위해 사용되는 클래스이다.

      • 프로그램을 빌드할때 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
      • 런타임에 특정 기능을 실행하도록 정보를 제공한다.
      • 개발자 입장에서 더욱 직관적이기에 코드를 이해하기 쉽다.
      • 다른 사람에게 설명할 수 있도록 정보를 제공한다.

      기본 코드

      public class SangpumTable {
      	private int code;
      	private String sang;
      	private int su;
      	private int dan;
      	
      	public SangpumTable() {
      		// jpa에서 생성자는 비어있어도 무조건 적어줘야한다.
      	}

      데이터베이스

       

      ✔ @Entity

      ⌨ 형식

      @Entity

      JPA를 사용해 테이블과 매핑할 클래스를 붙여주는 어노테이션이다.

      JPA가 해당 클래스를 관리하게 된다.

       

      선택사항)
      엔터티 이름입니다. 기본값은 엔터티 클래스의 정규화되지 않은 이름입니다. 이 이름은 쿼리에서 엔터티를 참조하는 데 사용됩니다. 이름은 Jakarta Persistence 쿼리 언어에서 예약된 리터럴이 아니어야 합니다.

      👏 중요

      기본 생성자가 꼭 필요하다. final, emum, interface, inner class에서는 사용이 불가능하다.

      필드변수를 final로 선언이 불가능하다.

       

      ✔@Table

      ⌨ 형식

      @Table(name = "테이블 이름")

      [참고 사이트] https://cjw-awdsd.tistory.com/46

       

       

      👏 중요

      @Table 어노테이션에 name 속성을 추가할 수 있지만 생략하고 싶으면 @Entity 어노테이션에서 name 속성을 주면 된다.

      ✔ @Id

      ⌨ 형식

      @Id

      특정 속성을 기본키로 설정하는 어노테이션이다.

      이 어노테이션만 적게될 경우 기본키 값을 직접 부여해줘야한다.

       

      @id 어노테이션만 적게될 경우 기본키 값을 직접 부여해줘야한다.

      보통 DB를 설계할 때는 기본키는 직접 부여하지 않고 mysql 에서 Auto_Increment처럼 자동부여된다.

      @GeneratedValue 어노테이션을 사용하면 기본값을 DB에서 자동으로 생성하는 전략을 사용할 수 있다.

      [참고 사이트]https://cjw-awdsd.tistory.com/46

      DB마다 지원하는 방식이 다르기에 다양한 전략이 필요하다.

      AUTO 같은 경우, DB에 따라 자동으로 선택한다. (DB를 변경해도 코드를 수정할 필요없다)

       

       

      👏 중요

      ✔@Column

      ⌨ 형식

      @Column(name="칼럼명")

       

      객체 필드를 테이블 컬럼과 매핑하는 역할을 한다.

      [참고사이트] https://cjw-awdsd.tistory.com/46

       

       

      👏 중요

      원본테이블에서 칼럼명과 동일하다면 생략이 가능하다.

       

       

      😊정리

      이 외에도 @Acess(JPA가 엔티티 데이터에 접근하는 방식을 지정), @Enumerated ..등 다양한 어노테이션이 있다.

      가장 기본되는 어노테이션을 정리해봤다.

       

      @Entity // JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션
      @Table(name="sangdata") //테이블 이름이 같지 않으면 적어줘야한다. 물리적인 테이블명 sangdata
      public class SangpumTable {
      	@Id //pk칼럼 알려주는 어노테이션
      	@Column(name="code") //지금처럼 원본테이블과 칼럼명이 같으면 생략가능 
      	private int code;
      	@Column(name="sang", nullable = false) //
      	private String sang;
      	private int su;
      	private int dan;
      	
      	public SangpumTable() {
      		// jpa에서 생성자는 비어있어도 무조건 적어줘야한다.
      	}

       

       

    Designed by Tistory.