천천히 알아보는 코딩공부

[JPA/Hibernate] JPA 조인 쿼리문 사용 본문

Java/SpringBoot

[JPA/Hibernate] JPA 조인 쿼리문 사용

고기고기물고기 2022. 9. 13. 16:11

JPA를 사용하면서 복잡한 쿼리문은 어떻게 사용할까 라는 의문이 든다.

JPQL를 많이 사용하게되면 처음부터 JPA를 사용하지 않고 Mybatis를 사용하지 왜 JPA를 사용할까?

실무에서는 이렇게 사용한다고 합니다

 

https://www.inflearn.com/questions/38771

 

Querydsl과 jpql을 선택하는 차이가 궁금합니다. - 인프런 | 질문 & 답변

드디어 querydsl을 배우고있네요! 제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하

www.inflearn.com

 

Entity

@Entity
public class Company {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    @JoinColumn(name = "company_id")
    private List<Product> products = new ArrayList<>();

    @OneToOne(mappedBy = "company", fetch = FetchType.LAZY)
    private Employee employee;

}

@Entity
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "company_id")
    private Company company;
    
}

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

}

Repository

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {

    List<Employee> findByCompany_Products_Name(String productsName);

}

 

결과 :

Comments