본문 바로가기


JPA

[JPA] JPAQuery 에서 Pageable(offset,limit,orderby) 사용하기 org.springframework.data.domain.Pageable 를 입력받고 메소드 쿼리에 사용중이었는데 custom 쿼리를 사용할일이 생겨서 queryDSL 로 새로 구현했다. Spring data jpa 의 메소드 쿼리에는 Pageable 을 넘겨주면 알아서 처리를 해주는데 queryDSL 에서는 따로 설정해야 했다. limit, offset 은 비교적 단순했으나 orderBy 에서 추가 구현이 필요해서 이부분을 기록해 두기로 한다. 코드를 첨부한다. @Repository class XXCustomRepositoryImpl( @Qualifier("xxQueryFactory") private val xxQueryFactory: JPAQueryFactory, ) : XXQuerydslReposi..
[JPA] @Convert 사용해서 Object를 Json 형식으로 저장하기 서론 요즘은 다양한 DB 에서 Json 타입을 지원하려고 하지만 하위버전이나 Json 타입을 지원하지 않는 DB 를 사용하고 있는 경우가 있을 것이다. 속성값 같은 건데 모두 column 으로 파는것보다는 Json 타입으로 저장하여 꺼내 쓰는 용도로 사용하면 유용한 경우가 있다. 이런 경우에 매번 가져올 때마다 convert 하지 않아도 Entity 내에서 객체 타입 그대로 사용할 수 있게 해주는 Java Persistence Api 가 있다. 예제 Product 라는 Entity 가 있고 ProductAttribute 를 Json 형식의 text 타입으로 DB Column 에 넣는다고 가정하자. Product Entity 코드 @Entity public class Product { ... @Conver..
[JPA] Differences between save() And saveAndFlush() of SpringJPA OS : MacOs MojaveDB : MySQL 5.7DB Tool : Sequel ProFramework : Spring Boot 2.0 You can see conclusion at bottom of content 1. PreparationI created a Member Entity.public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; @Column(name = "uuid") private String uuid; @Column(name = "name") private String name; }2. Compare save and saveAndFlu..
[JPA] save 와 saveAndFlush의 차이 OS : MacOs Mojave DB : MySQL 5.7 DB Tool : Sequel Pro Framework : Spring Boot 2.0 맨밑에 결론있음 1. 준비 다음과 같은 member Entity를 준비했다. public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; @Column(name = "uuid") private String uuid; @Column(name = "name") private String name; } 2. @Transactional 없이 save와 saveAndFlush 비교 1. save or saveAndFlush ..
[JPA] JPA시작하기 - JPA란? [JPA] JPA시작하기 - JPA란? JPA(JAVA PERSISTENCE API) JPA를 쓰는 이유 JPA를 제외한 자바를 통한 DB 접근 방법 JDBC API IBatis(MyBatis) 스프링 JDBC Template : SQL Mapper 위의 접근 방법의 문제점 1.CRUD의 SQL이 반복된다. JDBC API를 예를 들어 JAVA에서 Player라는 객체가 있을 때 회원정보를 조회하고 싶으면 다음과 같은 과정을 거쳐야 한다 1.조회 기능을 할 함수를 선언 2.SQL문 작성 3.SQL을 JDBC API를 통해 실행 4.API에서 가져온 데이터를 객체에 매핑 만약, 회원을 추가하는 기능을 구현하고 싶다면 다음과 같은 과정을 거쳐야한다. 1.회원을 추가하는 함수를 선언 2.SQL문 작성 3.정보..