본문 바로가기

JPA

(3)
QueryDSL은 왜 Q-Class를 사용할까? Entity를 compile하게 되면 static한 QClass들이 생성된다. 해당 Class들은 Meta Data에 대한 정보를 가지고 있는 Class들이다. 그렇다면 왜 Meta Class ( Q-Class )를 만드는 것일까 ? 자바에서는 객체에 접근하기 위해서는 new라는 키워드를 통해 객체를 생성해주어야 한다. Entity Class에서도 Property에 접근을 하기 위해서는 생성해줄 필요성이 있다는 이야기이다. 하지만, 이는 Java의 RunTime단계 즉, Spring Boot가 실행하면서 Entity에 해당하는 테이블을 Check하든지 등의 작업을 할때, 통제할수 있는 부분이 아니다. 따라서, Meta Class - 즉 static한 class를 만들게 되면 객체를 생성할 필요없이 pro..
영속성 컨텐스트란 ? Entity DB의 테이블과 매칭이 되는 개념 public class AccountHistory { @Id @GeneratedValue @Column(name = "ID") private Integer id; @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) @JoinColumn(name = "ACCOUNT_NO", referencedColumnName = "ACCOUNT_NO") private Account account; @Column(name = "DEPOSIT_WITHDRAWAL_YN", nullable = false) @ColumnDefault("'N'") private String depositWithdrawalYn; priv..
1. JPA란 우선 JPA에 앞서, 먼저 ORM에 대해 알아보도록하자. ORM(Object-Relational Mapping) 우리가 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다. 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있음. (내부적으로는 쿼리를 생성하여 DB를 조작함. 하지만 개발자가 이를 신경 쓰지 않아도됨) Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임 객..