Entity란?
JPA에서 관리되는 클래스 즉, 객체를 의미한다.
Entity 클래스는 DB의 테이블과 매핑되어 JPA에 의해 관리된다.
실습
JPA는 Spring 환경에서 하는것과 Java환경에서 하는것은 좀 다르다 무엇이 다른지는 나중에 알려준댄다. 일단 지금은 Java 환경에서의 JPA이다.
resoureces 우클릭 - Directory - META-INF
그리고 META-INF 우클릭 - New - File -> persistence.xml 라고 이름지어서 만들기
persistencs.xml에 아래의 코드 넣기
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="memo">
<class>com.sparta.entity.Memo</class>
<properties>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="jakarta.persistence.jdbc.user" value="root"/>
<property name="jakarta.persistence.jdbc.password" value="{비밀번호}"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/memo"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
</properties>
</persistence-unit>
</persistence>
스프링 환경이 아닌 자바환경에서 JPA를 사용하려면 xml 파일을 만들어야 한다. 그리고 <class>com.sparta.entity.Memo</class>를 보니 여기에 entity 클래스를 등록하는듯 하다.
build.gradle - dependencies에 아래의 코드 추가하기
데이터베이스를 연동할건데 예전에 쓰던 memo 데이터베이스를 사용할것이다.
memo의 테이블 내용을 모두 제거한다.
test 폴더의 java 폴더를 우클릭 - EntityTest 클래스 파일을 만든다.
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class EntityTest {
EntityManagerFactory emf;
EntityManager em;
@BeforeEach
void setUp() {
emf = Persistence.createEntityManagerFactory("memo");
em = emf.createEntityManager();
}
@Test
void test1() {
}
}
아래의 사진처럼 entity 패키지 만들기 - Memo 클래스 생성
package com.sparta.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {
@Id
private Long id;
// nullable: null 허용 여부
// unique: 중복 허용 여부 (false 일때 중복 허용)
@Column(name = "username", nullable = false, unique = true)
private String username;
// length: 컬럼 길이 지정
@Column(name = "contents", nullable = false, length = 500)
private String contents;
}
@Entity 애노테이션은 JPA가 관리할 수 있는 Entity 클래스를 지정하는 것이다.
@ID는 기본키이며 반드시 달아야 한다 안그러면 오류
@GeneratedValue(strategy = GenerationType.IDENTITY) 이걸 넣으면 데이터베이스에 데이터가 추가될때마다 자동으로 1씩 올라가는 숫자필드로 만든다. 여기서는 id필드에 붙여주는게 맞다.
@Table(name = "memo")는 매핑할 테이블의 이름을 지정한다 없다면 테이블을 생성한다.
@Column(name = "username") 클래스의 필드와 매핑을 할 데이터베이스의 컬럼
이미 만들어진 테이블과 엔티티 클래스와 매핑하는 경우 테이블의 컬럼 이름은 name인데 엔티티 클래스의 필드명이 username인 경우 @Colume(name="name") 이라고 해줘야 한다.
nullable은 null값 허용 여부 디폴트값은 true이다.
unique는 데이터의 중복값 허용 여부이고 디폴트값은 false이다. true는 중복값을 허용하지 않는다.
length는 글자수 제한
'Spring 입문주차 > 2주차' 카테고리의 다른 글
9. 영속성 컨텍스트의 기능 (0) | 2024.08.27 |
---|---|
8. 영속성 컨텍스트란 무엇일까? (0) | 2024.08.27 |
6. JPA란 무엇일까? (0) | 2024.08.20 |
5. IoC Container와 Bean (0) | 2024.08.19 |
4. 메모장 프로젝트의 IoC & DI (0) | 2024.08.19 |