JPA를 활용한 DB연동 및 쿼리 자동 작성 확인(구버전)

노건우·2023년 10월 10일
0

Spring

목록 보기
16/22

Member2

package com.codingbox.jpa;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.SequenceGenerator;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter @Setter
@SequenceGenerator(name="MEMBER_SEQ_GENERATOR",sequenceName = "MEMBER_SEQ",initialValue = 1,allocationSize = 1)
public class Member2 {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "MEMBER_SEQ_GENERATOR")
	private Long id;
	
	@Column(name = "name", nullable = false)
	private String username;
	
	
}

아래에 포스팅 한 글과 비교하면 조금은 귀여운 코드다. 물론 시퀀스와 할당을 일일이 설정한다는 점에서 불편하기에 덜 발전된 버전이라고 할 수 있다.

  1. 바로 전의 포스팅에서 언급했듯이 전반적인 틀은 동일하다. 다만 @GeneratedValue을 사용하지 않았기에 조금 설정해야 하는 값이 많다.
  2. 데이터베이스는 id, username으로 구성했다.
  3. em.persist(member);를 하기 전까지는 비영속 상태이며, em.persist()를 호출하여 영속상태로 전환한다.

Main

package com.codingbox.jpa;

import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.Persistence;

public class JpaMain4 {

	public static void main(String[] args) {
		EntityManagerFactory emf 
			= Persistence.createEntityManagerFactory("hello");
		EntityManager em = emf.createEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		
		// 비영속 상태
		Member2 member = new Member2();
		//member.setId("ID_A");
		member.setUsername("JPA_A");
		
		
		//영속상태로 넘어감
		em.persist(member);
		
		tx.commit();
		
		em.close();
		emf.close();
	}

}

전의 포스트와 비교하면 상당히 간단한 코드다. 이 게시물을 올리는 이유는 전의 포스트를 더 잘 이해하기 위함이다. 조금 다른점이라고 하면 nullable 속성으로 null 값을 허용하지 않도록 설정하는 것이다.

이 코드 또한 시퀀스를 설정해 주었기에 id값이 1로 들어가는 것을 확인할 수 있다.

profile
초보 개발자 이야기

0개의 댓글

관련 채용 정보