Back-End/JPA21 JPA란? JPA 는 데이테베이스 기술이라기 보다 애플리케이션 데이터를 객체지향 관점으로 바라보고 다룰 수 있게 해주는 객체지향 기술이다. JPA 을 이용해 객체 관점에서 복잡한 문제를 다루는데 만 집중하면 자칫 이면에서 일어나는 데이터베이스 작업의 최적화를 놓칠 수 있다. 데이터베이스는 중요한 IT 자산이며, 확장에 비용이 많이드는 리소스로 항상 최적화를 염두해 두어야 한다. JPA/Hibernate 는 SQL 쿼리를 직접 작성할 때보다 월등한 개발속도와 유지보수성을 누릴 수 있다. JPA 를 사용해서 얻을 수 있는 가장 큰 효과 SQL이 아닌 객체 중심으로 개발하여 생산성 및 유지보수의 향상 테스트 작성의 용이 개발단계에서의 DB 마이그레이션 용이 2022. 3. 11. JPA) 1차 캐시 영속성 컨텍스트는 내부에 캐시를 가지고 있는데 이것을 1차 캐시 라고 한다. 영속 상태 엔티티는 모두 이곳에 저장된다. 쉽게 이야기 하면 영속성 컨텍스트 내부에 Map으로 된 컬렉션이 있는데 이곳에 id를 식별자로 하는 엔티티 인스턴스가 저장된다. Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); em.persist(member); 1차 캐시의 키는 식별자 값이다. 그리고 식별자 값은 DB의 기본 키와 매핑되어있다. 따라서 영속성 컨텍스트에 데이터를 저장하고 조회하는 모든 기준은 DB 기본 키값이다. 1차 캐시에서 조회 em.find() 를 호출 하면 우선 1차 캐시에서 식별자 값으로 엔티티를 찾는다. 만약 .. 2022. 3. 11. QueryDsl 설정하기 ( Gradle 5.0 이상 ) 기존에 쓰던 QueryDSL 설정이 안되서 다른 설정의 코드를 가져왔습니다. 정리용도이므로 참고만 해주시면 감사하겠습니다. 제 다른 블로그에서 쓰던 글을 이전시킵니다. build.gradle 파일에 추가한다. buildscript { ext { queryDslVersion = "5.0.0" } } plugins { // 추가 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } dependencies { // 추가 implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" // Test Code에서 적용하기 위한 의존성 implementation "com.querydsl:querydsl-apt:${que.. 2022. 3. 11. 이전 1 2 3 4 다음