반응형 Spring Framework/JPA23 JPA WHERE AND OR 사용방법 정리 JPA에서 위 이미지의 테이블 Sample을 가지고 WHERE AND, OR 조건을 적용해서 조회하려고 하는데 먼저 SELECT * FROM WHERE GENDER = 'W' AND AGE = 25 인 항목을 조회하려면 Repository에 아래와 같이 findByGenderAndAge(String gender, Long age) ( findBy컬럼명And컬럼명 ) And컬럼명을 추가하는 식으로 메소드를 작성한다 sampleRepository.findByGenderAndAge("W", 25L) [Sample(id=3, name=영희, gender=W, age=25, createdDate=null, updatedDate=null)] 메소드를 작성한 뒤 호출해보면 gender가 W면서 age가 25인 항목만.. 2022. 8. 14. JPA 특정 컬럼 값 조건으로 조회하는 방법 이미지와 같은 Sample 테이블을 가지고 JPA에서 gender 컬럼 값을 가지고 조회 결과를 얻으려 하는데 Query로 보자면 SELECT * FROM SAMPLE WHERE GENDER = '값' 이런 식이 되겠다 여기서 @Query를 사용해줄 필요 없이 Repository에서 findBy컬럼명 만으로도 조회 조건을 걸어 가져올 수 있는데 public interface SampleRepository extends JpaRepository { public Sample findByGender(String gender); } 위 코드 예제를 보면 findByGender(String 값); 이렇게 메소드를 만들어주면 끝인데 주의할 점은 findBy컬럼명 이 Entity에 작성한 컬럼명과 일치해야 한다는 것.. 2022. 8. 14. JPA 테이블 생성 시 컬럼 순서 자동 변경 방지방법 JPA에서 ddl-auto를 사용해서 시작과 동시에 자동으로 테이블 생성 시 Entity 에서 순서대로 입력한 컬럼 순서대로가 아니라 a~z 순서대로 컬럼이 삽입되게 되는데 이 순서를 지정할 수 없기 때문에 운영에서는 절대로 적용하면 안되고 Local 에서 테스트 용도로 사용할 경우에는 그냥 이상하게 깔리는 대로 사용해야 한다 그래도 Entity에 작성한 Column 순서대로 사용하려면 application.properties 파일을 연 뒤 spring.jpa.hibernate.ddl-auto=none 위 옵션을 추가해서 자동 생성을 막아주고 DB에서 수동으로 테이블을 생성해서 사용하거나 혹은 테이블 생성 시 schema.sql 파일을 통해 테이블을 생성시킨 뒤 사용해주면 된다 2022. 8. 11. JPA Entity Column CamelCase로 생성하는 방법 JPA에서 @Entity 클래스 안에 컬럼명을 testName 같은 CamelCase로 지정해도 스프링을 실행하며 테이블 생성 시 컬럼명이 test_name 같은 snake_case로 생성되는 경우가 있는데 hibernate의 기본 옵션이 이렇기 때문에 application.properties 파일로 이동한 후 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 위 내용을 복사 붙여넣기 해 주면 hibernate 기본 옵션을 따르지 않고 내가 Entity에 설정한 컬럼명을 따라가게 된다 2022. 8. 11. JPA @CreatedDate @LastModifiedDate NULL 들어가는 경우 해결방법 JPA에서 @CreatedDate @LastModifiedDate 어노테이션을 사용하는 경우 각각 Insert 시 / Insert, Update 시 현재 시간이 들어가게 되는데 두 어노테이션을 사용해도 테이블에 Insert / Update 시 NULL이 들어올 경우에는 다음과 같은 부분을 고쳐주면 되는데 1. Application 클래스에 @EnableJpaAuditing 어노테이션 삽입 - Application 클래스란 메인 메소드가 들어있는 클래스를 말한다 2. Entity 클래스에 @EntityListeners(AuditingEntityListener.class) 어노테이션 삽입 - @CreatedDate @LastModifiedDate 어노테이션을 단 Column을 다른 클래스에서 extends로.. 2022. 8. 10. JPA @LastModifiedDate Column Insert 시 NULL로 넣는 방법 @LastModifiedDate @Column(insertable = false) private LocalDateTime updated_date; JPA에서 Entity에서 특정 컬럼에 @LastModifiedDate 어노테이션을 달아주면 특정 Row에 Insert / Update 시 현재 시간이 들어가게 되는데 Insert 시에는 NULL이 들어가고 Update 시에만 현재 시간이 들어가게 하려면 @Column을 @Column(insertable = false) 로 바꿔주면 Update 시에만 값이 들어가게 된다 2022. 8. 10. 이전 1 2 3 4 다음 반응형