Spring/JPA
-
Spring JPA Pageable 처리 - sort 및 Page 처리(totalElements)Spring/JPA 2024. 1. 9. 20:38
Pageable Pagination 기능을 편리하게 사용할 수 있도록 JPA는 Pageable이라는 객체를 제공한다. controller 에서 부터 pageable 관련 파라미터를 받을 수 있다. 정렬 기능 @GetMapping("/") public ResponseEntity getData( @PageableDefault(size = 10, sort = "reqDt", direction= Sort.Direction.DESC) Pageable pageable) // reqDt 에 대한 내림차순 정렬 @SortDefault 위의 방식은 정렬을 한가지만 할 수 있어, 여러 정렬 조건을 추가하려면 @SortDefault 를 추가하면 된다. @GetMapping("/") public ResponseEntity g..
-
[spring JPA] column annotation 컬럼 매칭 레퍼런스Spring/JPA 2021. 5. 3. 18:07
jpa 관련 어노테이션 @Column : 컬럼을 매핑한다. @Enumerated : enum 타입을 매핑한다. @Temporal : 날짜 타입 매핑한다. @Lob : BLOB, CLOB 타입을 매핑한다. @Transient : 해당 필드를 데이터 베이스에 매핑 시키지 않는다. @Access : JPA가 엔티티 접근하는 방식을 지정한다. @Column name : 필드와 매핑할 테이블의 컬럼 이름 insertable : 엔티티 저장시 이 필드도 같이 저장한다. false로 설정하면 데이터베이스에 저장하지 않는다. 읽기 전용일때 사용한다. updatable : 위와 동일한 하지만 수정일때 해당 된다. @Column(insertable=false, updatable=false) private String de..
-
[Spring JPA] @Id와 @GeneratedValue - Primary Key 생성방법Spring/JPA 2021. 4. 2. 15:49
@Id는 해당 프로퍼티가 테이블의 주키(primary key) 역할을 한다는 것을 나타낸다. @GeneratedValue는 주키의 값을 위한 자동 생성 전략을 명시하는데 사용한다. Primary 키 생성 전략으로 JPA가 지원하는 것은 아래의 네 가지이다. 1. AUTO : (persistence provider가) 특정 DB에 맞게 자동 선택 데이터베이스 벤더에 의존하지 않고, 데이터베이스는 기본키를 할당하는 벙법 - 데이터베이스에 따라서 IDENTITY, SEQUENCE, TABLE 방법 중 하나를 자동으로 선택해주는 방법이다. - 예를들어, Oracle일 경우 SEQUENCE를 자동으로 선택해서 사용합니다. 따라서, 데이터베이스를 변경해도 코드를 수정할 필요가 없다. 2. IDENTITY : DB의..
-
[Spring JPA] jpa 사용하기 - JpaRepositorySpring/JPA 2021. 4. 2. 15:24
jpa 를 사용하려면 @Entity 클래스를 먼저 생성해야 한다. @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name="coin.market_code") public class MarketCode { @Id @Column(name = "market_code") private String marketCode; @Column(name = "korean_name") private String koreanName; @Column(name = "english_name") private String englishName; @Builder public MarketCode(String marketCode, String koreanName, St..
-
[spring JPA] 스프링 jpa converter (empty string to null)Spring/JPA 2020. 10. 2. 22:40
JPA 를 사용하면서 DB 에 어떤 특정값이 들어오면 변환해줘야 할 떄가 있다. 예를 들어 empty string 을 null 로 넣어줘야 할떄다. (mysql) 빈스트링이 "" 가 들어올때 null 로 바꿔서 db 에 넣고 싶을때 @Convert 가 필요하다, 이 외에도 어떤 고정된 값들은 특정 값으로 변환해서 db 에 넣어줄떄 이 Convert 가 필요하다. 구현 방법은 변경하고자 하는 컬럼명 위에 @Convert 적고, 커스텀한 Class 명을 기입한다. @Table(name = "db1.test") public class Test { ... @Convert(converter = EmptyStringToNullConverter.class) @Column(name = "test_data") priva..
-
[Spring JPA] Column으로 쓰지않는 변수에 대한 선언. @TransientSpring/JPA 2020. 9. 22. 17:20
엔티티 클래스로 등록한 클래스지만, DB 테이블과는 별도로 기능이(추가 필드나 메소드) 필요한 경우가 있다. 예를 들어 DB 테이블에는 존재하지 않지만, 엔티티 클래스에는 등록되어 같이 운용하는 경우가 있다. vo(엔티티) 에는 사용하지만 jpa 로 디비와 관련 없이 사용하고 싶을때!! 이럴 경우, DB 테이블에 간섭하지 않고, 엔티티 클래스 내부에서만 동작하게 하는 어노테이션을 사용한다. @Transient 어노테이션을 사용하는데, 이 어노테이션은 하이버네이트의 jpa 패키지에 위치하고 있다. @Transient 어노테이션을 사용한 필드나 메소드는 DB 테이블에 적용되지 않는다. @Entity public class Member { private Long memberId; private String p..