Java Persistence API 란?

편집일시: 2020-05-14 09:40 조회수: 30 댓글수: 0
JPA
## Java Persistence API 란? JPA (Java Persistence API)는 관계형 데이터베이스에 액세스하기 위한 프레임워크이다. 데이터베이스 액세스라고 하면, Java SE에서는 오랫동안 JDBC가 일반적이었다. 지금도 사용하고 있는 사람은 꽤 있을 것이다. JPA는 데이터베이스 액세스라고 하기 보다는 정확하게는 "데이터 지속성" 기능을 제공한다. 지속성이라는 것은 "프로그램을 종료한 후에도 계속 데이터가 남아있다"라는 것을 말한다. 데이터베이스에 데이터를 저장하고, 필요에 따라 저장된 데이터를 조회할 수 있게 되는 것이다. 그럼, 데이터베이스 액세스로 되는 거자나? 왜 지속성이라고 하는거야? 라고 생각하는 사람이 있을 수도 있다. 이는 실제로 JPA를 사용해 보면 알 수 있을 것이다. JPA는 데이터 객체를 저장하면 그대로 저장될 뿐이다. JPA를 이용하게 되면 데이터베이스에 액세스하고 저장 쿼리를 실행은 전혀 하지 않아도 된다. 또한 액세스하는 SQL 쿼리를 텍스트로 작성하지도 않는다. 저장하는 객체에서 하나 하나 값을 꺼내 변경하고...... 등과 같은 일도 하지 않는다. 다만, 저장할 객체를 그대로 저장할 뿐이다. JPA 안쪽에서는 데이터베이스에 대한 액세스가 이루어지고 있다. 하지만 앞쪽(우리가 실제로 작동하는 측)에서는 Java의 객체를 저장하고 검색하고 있을 뿐이다. 데이터베이스에 SQL으로 액세스하고 하는 것을 의식하지 않아도 된다. 어디선가 "ORM"라는 말을 들어 본 적이 있을 것이다. ORM은 "Object-relational Mapping"의 약자로 Java의 객체와 관계형 데이터베이스 사이를 매핑하는 방식이다. Java 객체와 데이터베이스 레코드 사이를 매핑하고 원활하게 교환할 수 있는 구조를 제공하는 것이 ORM이다. JPA는 정확히 ORM과는 조금 다르지만, ORM처럼 Java의 객체에서 원활하게 데이터베이스 레코드로 변환하여 처리를 해준다. JPA를 이용하면 데이터베이스 이용의 개발도 데이터베이스 처리 등을 생각할 필요는 없다. 단, 데이터가 되는 클래스를 정의하고 해당 메소드를 호출하면 내부적으로 필요에 따라 데이터베이스에 액세스하게 되는 것이다. 또한 액세스를 위해서는 "JPQL"라는 전용 간이 언어가 준비되어 있다. 이것은 SQL과 유사한 언어이다. 하지만 SQL와 같이 데이터베이스마다 문법이 다른 경우가 있는데 하나의 작성 방법으로 다양한 데이터베이스에 동일하게 액세스할 수 있다. 데이터베이스를 변경하고자 하는 경우에도 이를 위한 설정을 다시 작성뿐이다. 구체적인 코드는 모두 다시 작성할 필요는 없다.

이전 글 : JPA 이용 준비