1. 스프링)기술면접
1) JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요?
JPA가 필요한 경우
- 객체 지향적인 개발이 중요한 프로젝트: JPA는 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 간극을 줄여줍니다. 객체 지향적인 설계를 중요시하는 프로젝트에 적합합니다.
- CRUD 작업의 빈번한 프로젝트: JPA를 사용하면 복잡한 CRUD(Create, Read, Update, Delete) 작업을 간단한 코드로 처리할 수 있습니다. 데이터를 자주 다루는 애플리케이션에 유용합니다.
- 데이터베이스 독립적인 개발이 필요할 때: JPA는 데이터베이스에 독립적인 개발을 가능하게 합니다. 즉, 코드 변경 없이 다른 종류의 데이터베이스로 쉽게 전환할 수 있습니다.
JPA가 필요하지 않은 경우
- 단순한 CRUD가 아닌 복잡한 쿼리가 많은 경우: 복잡한 쿼리를 자주 사용하거나 최적화된 쿼리가 필요한 경우, JPA보다는 SQL을 직접 다루는 것이 더 효율적일 수 있습니다.
- 초고성능을 요구하는 애플리케이션: JPA는 편리성과 개발 생산성을 높여주지만, 때로는 직접 쿼리를 최적화하는 것에 비해 성능이 떨어질 수 있습니다. 초고성능이 필요한 시스템에서는 JPA 사용을 재고해야 할 수 있습니다.
- 학습 곡선: JPA를 효과적으로 사용하기 위해서는 JPA 자체뿐만 아니라 ORM(Object-Relational Mapping)에 대한 이해가 필요합니다. 프로젝트의 시간적 여유가 없거나 팀원들이 JPA에 익숙하지 않다면, 초기 학습 비용이 부담될 수 있습니다.
2)JPA의 더티 체킹이란 무엇인가요?
더티 체킹의 작동 원리
변경 감지: JPA는 트랜잭션이 시작될 때 엔티티의 원본 상태를 스냅샷으로 저장합니다. 그리고 트랜잭션이 종료될 때, 현재 엔티티의 상태와 스냅샷을 비교하여 변경된 부분을 감지합니다.자동 업데이트: 변경된 부분이 감지되면, JPA는 해당 엔티티에 대한 UPDATE SQL 문을 생성하고 실행하여 데이터베이스의 데이터를 자동으로 업데이트합니다.
더티 체킹의 장점
개발 편의성: 개발자는 엔티티의 상태만 관리하면 되므로, 데이터베이스와의 동기화를 위한 추가적인 코드 작성이 필요 없습니다. 이로 인해 개발 생산성이 향상됩니다.성능 최적화: 변경된 데이터만을 대상으로 업데이트 쿼리를 실행하기 때문에, 불필요한 데이터베이스 접근을 줄일 수 있습니다. 이는 애플리케이션의 성능을 최적화하는 데 도움이 됩니다.
주의할 점
트랜잭션 범위 내에서만 작동: 더티 체킹은 트랜잭션 범위 내에서만 작동합니다. 따라서, 트랜잭션을 적절히 관리하는 것이 중요합니다.성능 문제 가능성: 더티 체킹은 편리하지만, 때로는 예상치 못한 시점에 데이터베이스 업데이트가 발생할 수 있습니다. 이는 성능 저하로 이어질 수 있으므로, 성능에 민감한 애플리케이션에서는 주의가 필요합니다.
'개발일지' 카테고리의 다른 글
| 2024.03.25 TIL (0) | 2024.03.25 |
|---|---|
| 2024.03.22 TIL (0) | 2024.03.22 |
| 2024.03.20 TIL (0) | 2024.03.20 |
| 2024.03.19 TIL (0) | 2024.03.19 |
| 2024.03.18 TIL (1) | 2024.03.18 |