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);
}
결과 :