특징 | ORM (Object-Relational Mapping) | SQL Mapper |
---|---|---|
쿼리 작성 | 자동 생성 (ORM이 객체 모델에 따라 생성) | 직접 작성 (개발자가 SQL 작성) |
매핑 방식 | 객체와 테이블 간의 매핑을 자동으로 처리 | SQL 결과를 객체에 자동으로 매핑 |
트랜잭션 관리 | 자동으로 관리 (ORM이 처리) | 직접 관리하거나 프레임워크에 의존 |
데이터베이스 독립성 | 상대적으로 독립적 (설정 변경으로 다른 DB 지원) | 종속적 (SQL에 따라 변경 필요) |
유연성 | 제한적 (자동 생성된 쿼리 사용) | 높음 (직접 작성한 SQL 사용) |
비즈니스 로직 중심 | 비즈니스 로직에 집중 가능 | SQL 쿼리에 집중 |
복잡한 쿼리 처리 | ORM의 쿼리 언어 사용 (JPQL, HQL 등) | 복잡한 쿼리를 직접 작성하여 처리 가능 |
Subject 키워드
메서드 처음 시작 위치에 오는 키워드로 어떤 작업을 할 것이며, 어떤 데이터 타입을 리턴할지 결정됩니다.
메서드명 내 키워드
By 뒤에 작성되는 키워드로 SQL의 Where 명령어와 같은 역할을 합니다.
키워드 | 샘플 | JPQL |
---|---|---|
And | findByLastnameAndFirstname | … where x.lastname = ?1 and x.firstname = ?2 |
Or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 |
Is, Equals | findByFirstname,findByFirstnameIs,findByFirstnameEquals | … where x.firstname = ?1 |
Between | findByStartDateBetween | … where x.startDate between ?1 and ?2 |
LessThan | findByAgeLessThan | … where x.age < ?1 |
Like | findByFirstnameLike | … where x.firstname like ?1 |
NotLike | findByFirstnameNotLike | … where x.firstname not like ?1 |
OrderBy | findAllByAgeOrderByLastnameDesc | … where x.age = ?1 order by x.lastname desc |
Not | findByLastnameNot | … where x.lastname <> ?1 |
In | findByAgeIn(Collection ages) | … where x.age in ?1 |
TRUE | findByActiveTrue() | … where x.active = true |
FALSE | findByActiveFalse() | … where x.active = false |