
: 자바 언어로 데이터베이스 프로그래밍을 하기위한 라이브러리
: JAVA ORM 기술에 대한 인터페이스 (데이터를 객체로 관리)
@PersistenceContext
entityManager, entityManagerFactory 자동으로 생성해줌
@Transactional
transaction 환경을 만들어줌
의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity(name="user") //테이블 이름과 매핑하기 위한 어노테이션 추가
public class UserEntity {
@Id // id라는 것을 인식하게 해주는 역할
@GeneratedValue(strategy = GenerationType.IDENTITY)//생성 방법은 데이터베이스에 위임
private Long id; //primary key인 id 필수
private String name;
private Integer score;
}
memory db를 사용하기 위해서는 repository라는 인터페이스를 만들어서 사용했다.
jpa를 사용한 방법에서는 미리 만들어진 JpaRepository를 상속받아서 사용하면 된다.
1. JPA 쿼리문 사용하기
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<UserEntity, Long> {
List<UserEntity> findAllByScoreGreaterThan(Integer score);
List<UserEntity> findAllByScoreGreaterThanEqualAndScoreLessThanEqual(Integer min, Integer max);
JPA에서 제공하는 쿼리문을 사용하면 sql문을 작성하지 않아도 원하는 데이터를 필터링하여 가져올 수 있다.
예를 들어 위에서 사용했듯이 findAllByScoreGreaterThan(Integer score)는 괄호안에 있는 점수보다 높은 점수를 가진 데이터를 가져오는 쿼리문이다.
쿼리문 참고사이트
2. @Query 사용하기
sql문을 직접 작성하여 데이터를 가져올 수 있는 방법이다.
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface UserRepository extends JpaRepository<UserEntity, Long> {
@Query(
value = "select * from user as u where u.score >= :min AND score <= :max",
nativeQuery = true
)
List<UserEntity> score(
@Param (value="min") int min,
@Param (value="max") int max
);
}