Skip to Content
Suffering builds character

4.엔티티

Entity란 데이터베이스 테이블과 매핑(Mapping)되는 자바 클래스로, 데이터를 포함하지만 중요한 로직은 포함하지 않는다는 특징이 있음 → 가급적 데이터베이스 테이블에서 사용되는 컬럼들로만 구성하는 것이 권장됨

어떤 자바 클래스가 JPA에서 관리되는 엔티티 클래스가 되기 위해서는, JPA에게 특정 자바 클래스를 엔티티로 관리하도록 명시해주어야 함

1. XML 파일 기반 자바 클래스 - 엔티티 매핑 방식

Hibernate 3.0 버전 이전에는 테이블과 Entity를 맵핑하기 위해 XML 기반의 설정을 사용했음

1-1. Book.java를 데이터베이스 테이블과 맵핑하기 위한 설정 파일 예시

Book.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="dev.syntax.model.Book" table="Book"> <id name="id" type="int"> <column name="id" /> <generator class="identity" /> </id> <property name="bookName" type="java.lang.String"> <column name="book_name" /> </property> <property name="author" type="java.lang.String"> <column name="author" /> </property> <property name="pubDate" type="java.util.date"> <column name="pub_date" /> </property> </class> </hibernate-mapping>

XML 방식은 JPA 인터페이스를 사용하지 않고, Hibernate 구현체를 직접 사용하는 경우에 적용 가능한 설정 방식으로 본 과정에서 사용할 일은 없음

2. Annotation 기반 자바 클래스 - 엔티티 매핑 방식

2-1. @Entity

자바 클래스를 JPA에서 관리하는 하나의 엔티티 클래스로 적용하기 위한 Annotation

JPA 인터페이스에서 제공하는 javax.persistence패키지의 Annotation을 활용할 경우,
자바 클래스와 엔티티 간의 간단한 매핑 적용 가능

2-2. Book.java를 데이터베이스 테이블과 맵핑하기 위한 설정 파일 예시

Book.java
@Entity public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "book_name", nullable = false) private String bookName; private String author; @Temporal(TemporalType.TIMESTAMP) @Column(name = "pub_date") private Date pubDate; }
Last updated on