장점 관리 및 유지보수 용이 @Entity 클래스에 쿼리에 필요한 테이블 컬럼을 작성하여 실행하면 테이블을 생성 및 업데이트할 수 있다. SQL문을 직접적으로 작성하지 않고 객체를 바탕으로 데이터베이스를 동작시키므로 유지보수가 간결하다. 생산성 향상 JPA를 사용하게 되면 기본적으로 제공되는 CRUD 관련 쿼리들이 있어, 자주 쓰이는 쿼리를 직접 작성하지 않아도 되며, 생성한 객체를 바탕으로 데이터베이스를 다루기 때문에 객체 중심으로 개발할 수 있다. RDBMS 종류에 독립적 MySQL, Oracle, PostgreSQL과 같이 서로 다른 데이터베이스를 사용하려고 할 때 쿼리 문법이 달라도 JPA 문법으로 통합하여 사용할 수 있다. 객체 중심으로 동작하기 때문이다. 단점 복잡한 쿼리문 작성 어려움 JPA..
Database
Java에서 ORM 없이 데이터베이스에게 실행할 쿼리를 전달할 때 Statement 또는 PreparedStatement를 사용해 본 적이 있을 것이다. 비슷한 이름의 두 객체가 어떤 차이가 있는지, 어떨 때 쓰는 것이 적합한지를 알고 쿼리를 효율적으로 실행시켜 보자. 쿼리 수행 방식 데이터베이스가 하나의 Statement를 받을 때 데이터베이스 엔진은 먼저 parse와 문법 검사를 진행한다. 그 후 Statement를 수행하기 위한 가장 효율적인 방법을 탐색한다. 탐색 과정에서 어떤 인덱스를 사용할지, 모든 row를 탐색할 것인지 등을 결정하여 쿼리 플랜을 세우게 되는데, 이 계산하는 과정에서 비용이 많이 들게 된다. 쿼리 플랜이 세워지면 데이터베이스는 그에 따라 쿼리를 실행한다. 차이 Statemen..