랄라
Entity 와 Persistence Context (영속성 컨텍스트) 본문
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 |