Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크이고 JPA의 구현체로, JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용한다. 하이버네이트는 자바객체를 통해 데이터베이스가 Oracle, MySql, MSSQL 등 에 상관없이 다룰수 있도록 하는 추상화를 목표로 한다. Mybatis에 익숙한 사람들이라면, Mybatis 구조가 들어가는 자리에 Hiberante가 들어오는 구조라고 이해하면 된다. 이를 통해 개발자는 SQL를 직접 사용하지 않고 메서드 호출만으로 쿼리가 수행된다, 즉 SQL을 작성하는 시간을 줄여 생산성이 높아진다. 하지만 직접 SQL을 작성하는것보다는 성능상 좋지 않고 세밀하게 데이터를 조작하기 힘들다. 이를 보안하기 위해 JPQL과 NativeQuery..
query
JPA에서 동적 쿼리를 위한 스펙 구현 JPA는 다양한 검색 조건 조합을 위해 CritetiaBuilder와 Predicate를 이용해서 검색 조건을 구현해야 한다. /* JPA 리포지터리를 위한 Specification 인터페이스 */ public interface Specification { Predicagte toPredicate(Root root, CriteriaBuilder cb); } /* 스펙 구현 */ public class OrdererSpec implements Specification { private String ordererId; public OrdererSpec(String ordererId) { this.ordererId = ordererId; } @Overridee publi..