JPA5 [ QueryDSL ] Spring Boot + Querydsl (1) 📌 스프링 부트 + 스프링 데이터 JPA의 한계점 ➥ 복잡한쿼리, 동적쿼리를 해결하지 못한다 📌 Querydsl - 자바언어의 한계를 넘어서 쿼리를 자바 코드로 작성하여 문법 오류를 컴파일 시점에 잡을 수 있다 - 동적 쿼리 문제를 해결할 수 있다 - 쉬운 SQL 스타일의 문법이라 복잡한 쿼리도 쉽게 작성할 수 있다 💻 예시 ( JPQL vs Querydsl) @Test public void jpal() { String username = "kim"; String query = "select m from Member m" + //error "where m.username = :username"; List result = em.createQuery(query, Member.class) .getResultL.. 2022. 11. 24. [JPA] 연관관계 매핑 @OneToMany @ManyToOne @OneToOne @ManyToOne ⭐ 항상 Enitity 본인 중심으로 관계를 생각! : 주인공인 객체를 판단해서 어떤 어노테이션을 붙여야되고, 그 어노테이션 하위에는 어떤 다른 객체가 들어갈 수 있는지 이것들을 반드시 사전에 설계할 때 고려해 줘야 함 - 1:N) 하나의 주문은 여러 음식을 가질 수 있다. - 1:1) 하나의 주문은 하나의 쿠폰을 적용할 수 있다. - 음식점주는 여러명이 될 수 있고 레스토랑은 하나이다. (N:1) - 여러명의 고객은 여러개의 레스토랑을 좋아한다. 2022. 10. 10. [JPA] JPA(Java Persistence API) 💡 ORM - ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻 (Java 진영에 국한된 기술은 아님) ORM 프레임워크를 사용하면 객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고, 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해준다. 즉, 객체가 테이블이 되도록 매핑시켜주는 것을 말한다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있다. 예를들어, MySQL에서는 SELECT * FROM user; 라는 query를 실행해야 하지만, ORM을 사용하면 User 테이블과 매핑된 객체를 user라 할 때, user.findAll() 라는 메서드 호출로 데이터 조회가 가능하다. 💡 JPA.. 2022. 10. 7. [ Java ] - JAP 기본적인 CRUD / DB-H2 (2) 🔻🔻🔻 환경설정: https://bkyungkeem.tistory.com/16 [ Spring Boot ] - JAP 환경 설정 / DB-H2 (1) 🔨 프로젝트 생성 인텔리제이 - Spring Initializr Type: Gradle Language: Java Java Version: 11 Type: Gradle Lombok Spring Web Spring Data JPA H2 Database MySQL Driver 🔨 H2 웹콘솔 띄워보기 경로 : src > main > resource bkyungkeem.tistory.com 🔨 기본적인 클래스 만들기 경로 = 패키지 클래스 = 클래스파일 경로: dto > 클래스: MemoRequestDto.java @Getter p.. 2022. 10. 4. [ Java ] - JAP 환경 설정 / DB-H2 (1) 🔨 프로젝트 생성 인텔리제이 - Spring Initializr Type: Gradle Language: Java Java Version: 11 Type: Gradle Lombok Spring Web Spring Data JPA H2 Database MySQL Driver 🔨 H2 웹콘솔 띄워보기 경로 : src > main > resources > application.properties spring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL; spring.jpa.show-sql=true - Application.java 파일 run - http://localhost:8080/h2.. 2022. 10. 4. 이전 1 다음