META-INF 설정
<?xml version="1.0" encoding="UTF-8"?>
<!-- 설정파일을 뜻하는 persistence 엘리먼트로 XML 네임스페이스와 사용할 버전을 지정 -->
<persistence xmlns="<http://xmlns.jcp.org/xml/ns/persistence>" version="2.2">
<persistence-unit name="jpatest">
<properties>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="jakarta.persistence.jdbc.user" value="test"/>
<property name="jakarta.persistence.jdbc.password" value="test"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/menudb"/>
<property name="hibernate.show.sql" value="true"/>
<property name="hibernate.format.sql" value="true"/>
<!-- DML 구문 수행 시 자동으로 스키마 생성 -->
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
Table 생성 및 데이터 등록 예시
@Test
public void create_test_table() {
// 테이블 만들기 테스트
// given
Member member = new Member();
member.setMemberNo(1);
member.setMemberId("user01");
member.setMemberPwd("pass01");
member.setNickName("사용자01");
member.setPhone("010-1234-5678");
member.setEmail("test@naver,com");
member.setAddress("서울시 강남구 역삼동");
member.setEnrollDate(new Date(System.currentTimeMillis()));
member.setMembberRole("user");
member.setStatus("Y");
// when
entityManager.persist(member);
// then
Member foundMember = entityManager.find(Member.class, 1);
assertEquals(member.getMemberNo(), foundMember);
}
해당 예시에서는 Member
객체를 생성 후 데이터를 등록하는 Test Code 이다.
하지만 이대로 실행할 경우 데이터는 등록되지 않음.
JPA에서 영속성 컨텍스트 내부에는 엔티티를 보관하는 저장소 즉, 1차 캐시
가 존재한다.
위 예제에서는 Member
객체를 등록함으로써 테이블은 생성을 시도하였지만 Flush를 통해서 DB에 반영되는 구조 이기 때문에 Select 시점에서는 아직 데이터가 없어 조회가 불가능
추가적으로 조회 후, 객체에 setter 메소드를 실행하면 update
문이 실행된다.