깃허브 액션 CI 구축 과정 from 온 프레미스 서버
·
CI & CD
깃허브 액션 적용 배경Java Enum 활용기 | 우아한형제들 기술블로그 Java Enum 활용기 | 우아한형제들 기술블로그안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해techblog.woowahan.com해당 글 에서는, 현재 개발 트렌드가 관리 주체가 DB에서 코드(객체)로 변하고 있다는 것을 통해서 코드 개발 및 유지보수의 용이성을 높일 수 있다고 설명합니다. 현재 회사에서 사용하는 JPA도,쿼리를 객체 지향적으로 작성할 수 있도록 도와 주는 도구다 보니, 이를 더 잘 활용하기 위해서는 CI&CD 구축이 필요하다고 생각하였습니다.CI & CDCI ..
JPQL 과 QueryDSL 문법 비교 및 Q-Type활용
·
Back-End/JPA
https://www.inflearn.com/course/querydsl-%EC%8B%A4%EC%A0%84/dashboard 실전! Querydsl - 인프런 | 강의 Querydsl의 기초부터 실무 활용까지, 한번에 해결해보세요!, 복잡한 쿼리, 동적 쿼리는 이제 안녕! Querydsl로 자바 백엔드 기술을 단단하게. 🚩 본 강의는 로드맵 과정입니다. 본 강의는 자바 백엔 www.inflearn.com 테스트 초기 설정 @SpringBootTest @Transactional public class QuerydslBasicTest { @Autowired EntityManager em; @BeforeEach public void before() { queryFactory = new JPAQueryFacto..
데이터 스프링 JPA - 쿼리 메소드 기능(벌크성 수정 쿼리, @EntityGraph, JPA Hint & Lock)
·
Back-End/Spring Data JPA
실전! 스프링 데이터 JPA - 인프런 | 강의 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com 벌크성 수정 쿼리 벌크성 쿼리는 대량의 엔티티 속성을 수정해야 할 때, 사용하는 기능이다. ex) 월급이 300 이상인 사원들의 연봉 10% 인상을 DB에 반영 등 일반 JPA 벌크성 수정 쿼리 public int buikAgePlus(int age) { return em.createQuery("update Member m set m.age = m.age + 1 where m.age >= ..
스프링 데이터 JPA - 쿼리 메소드 기능(페이징과 정렬)
·
Back-End/Spring Data JPA
실전! 스프링 데이터 JPA - 인프런 | 강의 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com 순수 JPA 페이징과 정렬 JPA에서 페이징을 어떻게 수행하는지 알아 보자. JPA 페이징 리포지토리 코드 public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member m where m.age = :age order by m.username desc") .setParame..
스프링 데이터 JPA - 쿼리 메소드 기능(쿼리 메소드 이름, @NamedQuery, @Query)
·
Back-End/Spring Data JPA
실전! 스프링 데이터 JPA - 인프런 | 강의 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com 스프링 데이터 JPA는 메소드 이름만으로 쿼리를 자동으로 생성해주는 쿼리 메소드(Query Method) 기능을 제공합니다. 이를 사용하면 별도의 쿼리문 작성 없이도 간단하게 데이터를 조회할 수 있습니다. 쿼리 메소드 기능은 다양한 형태의 메소드를 지원하며, 이번 글에서는 몇 가지 예시를 살펴보겠습니다. 메소드 이름으로 쿼리 생성 메소드의 이름을 분석해서 JPQL 쿼리를 실행시켜 준다. 이..
스프링 데이터 JPA - 공통 인터페이스(JpaRepository) 기능 생성
·
Back-End/Spring Data JPA
실전! 스프링 데이터 JPA - 인프런 | 강의 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com 순수 JPA 기반 리포지토리 생성 JPA 에서는 변경감지를 통해서 엔티티의 값이 변경 되면, 자동으로 update 쿼리문을 생성해서 DB에 날려주기 때문에, update 쿼리를 생성 할 필요가 없다. 리포지토리 생성 MemberJpaRepositoy package study.datajpa.repository; import jakarta.persistence.EntityManager; imp..
스프링 데이터 JPA - 프로젝트 환경설정 및 예제 도메인 모델 작성
·
Back-End/Spring Data JPA
실전! 스프링 데이터 JPA - 인프런 | 강의 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다. www.inflearn.com 위 강의는 스프링 2.2.1 버전으로 제작되었지만 저는 3.1.2 버전으로 진행하였습니다. 또한, Dto는 자바 17에서 제공해 주는 record를 사용해서 진행할 예정입니다. JPA DB 설정 및 동작확인 Gradle 전체 설정 plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency..
Java 17 변경점
·
Language/Java
Java 8과 11에 이은 새로운 LTS(Long-Term Support) 버전인 Java 17이 릴리즈 되었다. 토이 프로젝트에서 Spring Boot 3.1.0 버전을 사용하게 되었는데, 스프링 부트 3 버전부터는 Java17 이상을 지원한다. 따라서 Java11이후의 Java17의 주요 변경점을 알아보자 1. 텍스트 블록 private static void oldStyle() { String text = "{\n" + " \"name\": \"John Doe\",\n" + " \"age\": 45,\n" + " \"address\": \"Doe Street, 23, Java Town\"\n" + "}"; System.out.println(text); } 위와 같이 JSON 문자열 생성시 큰 따옴표를..
JPA 활용 - 컬렉션 조회 최적화
·
Back-End/JPA
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의 스프링 부트와 JPA를 활용해서 API를 개발합니다. 그리고 JPA 극한의 성능 최적화 방법을 학습할 수 있습니다., 스프링 부트, 실무에서 잘 쓰고 싶다면? 복잡한 문제까지 해결하는 힘을 길러보세요 www.inflearn.com 주문내역에서 주문한 상품 정보를 추가로 조회해보자 Order 기준으로 컬렉션인 OrderItem 와 Item 이 필요 주문 조회 V1 - 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping(..
JPA - 값 타입(1)
·
Back-End/JPA
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자 www.inflearn.com JPA의 데이터 타입 엔티티 타입 @Entity로 정의하는 객체 데이터 변화해도 식별자로 지속 추적 가능 예) 회원 엔티티의 키나 나이 값이 변해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입 혹은 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 ..