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;
}
아래에 포스팅 한 글과 비교하면 조금은 귀여운 코드다. 물론 시퀀스와 할당을 일일이 설정한다는 점에서 불편하기에 덜 발전된 버전이라고 할 수 있다.
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로 들어가는 것을 확인할 수 있다.