랄라

Entity 와 Persistence Context (영속성 컨텍스트) 본문

내일배움캠프/공부정리

Entity 와 Persistence Context (영속성 컨텍스트)

devdaeun 2025. 2. 4. 10:54

Entity

JPA 에서 관리되는 클래스(객체)

DB의 테이블과 연결되어  JPA에 의해 관리된다.

@Entity //JPA가 인식할 수 있도록 Entity 어노테이션 지정
@Table(name="테이블명") // 테이블명 지정
public class SampleEntity{
	//기본키(PK)
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increament 설정
    private 속성 이름;
    
    //하위 컬럼
    //nullabel(null허용여부), unique(중복허용여부) 등의 추가기능이 존재
    @Column(name = "컬럼이름")
	private 속성 이름;
}

Persistence Context (영속성 컨텍스트)

Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간

 

Entity Manager

영속성 컨텍스트에 접근하여 Entity를 조작하기위해 필요한 관리자.

매니저를 통해 entity 저장 및 조회등의 기능을 수행할 수 있으며, Entity Manager는 EntityManagerFactory를 통해 생성

 

EntityManagerFactory

- 일반적으로 DB 하나당 한개의 facotry가 생성되어 애플리케이션이 동작하는동안 사용됨.

 

1. /resources/META-INF 위치에   persistence.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="엔티티 이름">
        <class>엔티티 패키지 정보</class>
        <properties>
            <property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="jakarta.persistence.jdbc.user" value="사용자명"/>
            <property name="jakarta.persistence.jdbc.password" value="비밀번호"/>
            <property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/저장소이름"/>

            <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>

 

2.EntityFactory 및 Manager 생성

EntityMangerFactory emf = Persistence.createEntityManagerFactory("엔티티명");
EntityManager em = emf.createEntityManager();

 

3. 적용및 사용예시

@PersistenceContext //EntityManager 자동주입
private EntityManager entityManager;

public void saveEmployee(Employee employee) {
    entityManager.persist(employee);  // 엔티티 저장
}

public Employee findEmployeeById(Long id) {
    return entityManager.find(Employee.class, id);  // 엔티티 조회
}

public void deleteEmployee(Employee employee) {
    entityManager.remove(employee);  // 엔티티 삭제
}

 

'내일배움캠프 > 공부정리' 카테고리의 다른 글

Cookie와 Session  (0) 2025.02.04
SpringBoot JPA, Spring Data JPA  (0) 2025.02.04
JDBC (+JdbcTemplate)  (0) 2025.02.04
SQL (MYSQL 기준)  (2) 2025.02.04
3 Layer Architecture  (0) 2025.02.04