본문 바로가기

Programming/Java_Spring60

JPA namingstrategy JPA에서 사용될 DTO는 컬럼명과 일치시키기 위해 대문자를 _로 변경해주도록 되어있다. @Entity public myClass{ private String myID; private String myId; private String userName; } 뭐... 위에처럼 클래스가 선언되었으면.. 맵핑은 myID -> my_i_d myId -> my_id userName -> user_name 이런식으로.. 만약 이걸 따르지 않겠다고 한다면 네이밍 전략을 바꿔줄수 있다. application.yml (or properties)에.. 우선 yml기준으로 작성 spring: jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming... 2022. 8. 30.
JPA로 조회하기 JPARepository를 상속받아 사용하면 꽤 많은 쿼리를 생성해준다. (오오.. C#할땐 건건이 다 만들었는데..) 기본적으로 findAll이 있고. (다 찾는거) 만약 특정 값과 같은 결과만 찾는다면 아래와 같이 함수 선언만해주면 된다. //동일 조건 검색 List findAllByStatusEquals(String status); //특정 조건보다 큰값 검색 List findAllByStatusAfter(String after); //특정 조건보다 큰 값 검색 (ID로 내림차순 정렬) List findAllByStatusAfterOrderByIdDesc(String after); 이렇게.. 붙여두면 알아서 쿼리해준다.(오!!) 만약 내가 custom 쿼리를 만들고싶다면 아래처럼 @Query("SE.. 2022. 8. 30.
JPA사용시, null value was assigned to a property exception JPA를 사용하니까 편하다. 알아서 맵핑도 해주고. 맵핑 시, 다음과 같은 규칙만 조심하면(?).. 만약 컬럼명이 CELL_NO라면.. 변수명은 cellNo. 물론 변수명을 다르게 지정하고 컬럼을 매핑하고싶다면 아래와 같이 하면 된다. @Column(name = "CELL_NO") private String cellphone; //or private String cellNo; 둘중 어떤걸 써도 다 되니까. 굿! 근데... nullable인 컬럼들이 있다. String은 null도 가능하지만, int형이랑 맵핑되는데 그 컬럼이 null이면? exception이 발생한다. 이거 뭐지?? 하고 검색해보았다. 핵심을 정리한 블로그가 있어서 링크 추가. https://beforb.tistory.com/10 [Er.. 2022. 8. 29.
@Valid시 Data Validation시 예외처리 남기기 @Valid 애노테이션을 사용하면, 전달받는 객체에 대해 검증을 처리할 수 있다. 그리고 BindingResult를 통해서 처리하든, 아니면 바로 BindException을 발생시켜버리든 가능하다. 근데, Exception이 발생한 이후에도 적절한 예외처리를 하거나, 아니면 예외 발생 시, 그에 맞는 메시지를 띄우고싶다면? 그 전에.. @Valid애노테이션을 통해 데이터 검증을 해주는 방법은 아래 포스팅 참고 https://gomnezip.tistory.com/399 @Valid와 @ControllerAdvice 애노테이션 @Valid애노테이션을 사용하여 전달되는 값의 validation을 수행할 수 있다. 만약 메소드에서 전달받은 이후에 무언가 처리를 하고싶다면 BindingResult를 쓰면 되지만 .. 2022. 8. 19.
componentscan not a managed type : class 내가 진행중인 프로젝트를 실행하면 my.project.api1.service에서 my.project.api1.mapper를 찾을 수 없다는 에러가 뜬다. 그래서.. @SpringBootApplication @ComponentScan(basePackages = {"my.project.api1.*"} //이거 한줄 추가 public class MyServiceApplication{ psvm .. } 그랬더니.. 이번에는 Componentscan not a managed type : Class 'DTO' 2022. 8. 9.
@Entity에서 키가 여러개일 때. Entity로 연동 시, DB의 키가 여러개일때, @Id를 여러개 붙이면, 실행 시 오류가 발생한다. Serializable을 구현하라고.. 구글링을 해보니.. 키가 여러개일 때, 별도로 뭐 하나 구현해주어야한다. @Embeddable을.. 나의 경우 원래 DTO는 아래와 같은 형식이었다. @Data @Entity @Table(name="MyTable") public class MyTableInfo{ @Id private String id1; @Id private String id2; private String name; private String value; } 이렇게 하면 오류가 발생하니, @Embeddable애노테이션을 사용하여 별도의 키 클래스를 하나 정의하고, 그걸 여기 Entity에 추가해주어.. 2022. 8. 9.
728x90