Time does not change us. It just unfolds us.

Web/JPA 5

[JPA]객체지향 쿼리

QueryDSL은 써볼 기회는 없었지만 JPQL을 직접사용하거나 JPA Criteria로 처리하는 것보다 실무에서 훨씬 유지보수에 유리하다고 들어 용어만 이해하고 넘어가려 한다. 같은 강사님의 강의를 들은 분이 정리한 QueryDSL 사용법과 실무 경험 공유 내용을 시간될 때 참고해야겠다. https://ict-nroo.tistory.com/117 [JPA] Spring Data JPA와 QueryDSL 이해, 실무 경험 공유 Spring Data JPA와 QueryDSL JPA 기반 프로젝트 Spring Data JPA QueryDSL Spring Data JPA 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결 개발자는 인터페이스만 작성한다 스프링 데이터 JPA가 구현 객체.. ict-nroo...

Web/JPA 2021.11.25

[JPA]Transcation, 영속성Context, EntityManager

강의를 듣고 Repository에 대한 단위 테스트를 진행하면서 "EntityManager.persist(member) 하여도 insert문 안나가고 DB transaction commit 할 때 query가 나갑니다." 라는 설명을 듣고 개념들을 하나씩 찾아보기로 했다. @Transaction 데이터베이스에서 논리적 상태 변화, 즉 Insert, Update, Delete로 데이터베이스의 데이터가 변화가 있는 것을 트랜잭션(transaction)이라고 한다. Transcation은 Transaction은 2개 이상의 쿼리를 하나의 커넥션으로 묶어 DB에 전송(commit)하고, 이 과정에서 에러가 발생할 경우 자동으로 모든 과정을 원래대로 되돌려 놓는다.(rollback) 이러한 과정을 구현하기 위해 ..

Web/JPA 2021.11.23

[JPA]JPQL(Java Persistence Query Language)

JPA를 공부하면서 JPA는 SQL을 추상화한 JPQL이라는 객체지향 쿼리 언어를 제공한다는 것을 알게 되었다. JPA은 table 대상인 SQL과 달리 Entity 객체를 중심으로 개발하므로 Entity 대상으로 Query를 작성​한다고 한다. JPQL과 SQL 차이점 JPQL은 엔티티 객체를 대상으로 쿼리한다. SQL은 데이터베이스 테이블을 대상으로 쿼리한다. 그 외 특징들 엔티티 객체를 조회하는 객체지향 쿼리 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않음 JPA는 JPQL을 분석한 후 적절한 SQL을 만들어 데이터베이스를 조회 방언(Dialect)만 변경하면 JPQL을 수정하지 않고 자연스럽게 DB 변경 가능 JPQL 문법의 전체 구조는 SQL과 유사 아래와 같이 Entity 이름과 ..

Web/JPA 2021.11.22

[JPA]Annotation 정리

아래와 같은 table을 작성하기 위해 entity 개발을 하면 사용된 annotation을 정리하고자 한다. @Entity 데이터베이스 테이블과 일대일로 매칭되는 객체 단위로, Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다. 객체의 인스턴스를 구분하기 위한 유일한 키값을 가지는데 테이블 상의 Primary Key와 같은 의미이다. @Id Entity 클래스 상에 해당 PK를 명시적으로 지정한다. @Column 데이터베이스의 테이블에 잇는 컬럼과 동일하게 1:1로 매칭되기 때문에 Entity 클래스 안에 내부변수로 정의된다. 별다른 옵션을 설정하지 않는다면 생략이 가능하다. 즉 Entity 클래스에 정의된 모든 내부변수는 기본적으로 @Column 어노테이션을 포함한다고 본다...

Web/JPA 2021.11.18