-
jpa) DB와 매핑 어노테이션 @Entity, @Table, @Id, @ColumnJAVA/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 = "테이블 이름")
👏 중요
@Table 어노테이션에 name 속성을 추가할 수 있지만 생략하고 싶으면 @Entity 어노테이션에서 name 속성을 주면 된다.
✔ @Id
⌨ 형식
@Id
특정 속성을 기본키로 설정하는 어노테이션이다.
이 어노테이션만 적게될 경우 기본키 값을 직접 부여해줘야한다.
@id 어노테이션만 적게될 경우 기본키 값을 직접 부여해줘야한다.
보통 DB를 설계할 때는 기본키는 직접 부여하지 않고 mysql 에서 Auto_Increment처럼 자동부여된다.
@GeneratedValue 어노테이션을 사용하면 기본값을 DB에서 자동으로 생성하는 전략을 사용할 수 있다.
DB마다 지원하는 방식이 다르기에 다양한 전략이 필요하다.
AUTO 같은 경우, DB에 따라 자동으로 선택한다. (DB를 변경해도 코드를 수정할 필요없다)
👏 중요
✔@Column
⌨ 형식
@Column(name="칼럼명")
객체 필드를 테이블 컬럼과 매핑하는 역할을 한다.
👏 중요
원본테이블에서 칼럼명과 동일하다면 생략이 가능하다.
😊정리
이 외에도 @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에서 생성자는 비어있어도 무조건 적어줘야한다. }
'JAVA > ORM' 카테고리의 다른 글
[JSP] MyBatis 적용_2(어노테이션 없이) (0) 2024.07.30 SqlSessionFactory 클래스 정리 (0) 2024.07.29 [JSP] MyBatis 적용 (ORM/ 어노테이션 없이) (0) 2024.07.29 java에서 jpa 사용해보기 _ CRUD (JPA를 사용한 DML처리) (2) 2024.06.19