JPA란? JPA는 자바 진영의 ORM 표준 기술이다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 준다. 따라서 객체 측면에서는 정교한 객체 모델링을 할 수 있고 관계형 데이터베이스는 데이터베이스에 맞도록 모델링하면 된다. 그리고 둘을 어떻게 매핑해야 하는지 매핑 방법만 ORM 프레임워크에게 알려주면 된다. 덕분에 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있다. JPA는 자바 ORM 기술에 대한 API 표준 명세다. 쉽게 이야기해서 인터페이..
패러다임 불일치란? 애플리케이션은 발전하면서 그 내부의 복잡성도 점점 커진다. 지속 가능한 애플리케이션을 개발하는 일은 끊임없이 증가하는 복잡성과의 싸움이다. 복잡성을 제어하지 못하면 결국 유지보수하기 어려운 애플리케이션이 된다. 객체지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다. 비즈니스 요구사항을 정의한 도메인 모델도 객체로 모델링하면 객체지향 언어가 가진 장점들을 활용할 수 있다. 문제는 이렇게 정의한 도메인 모델을 저장할 때 발생한다. 객체는 속성(필드)과 기능(메서드)을 가진다. 객체의 기능은 클래스의 정의되어 있으므로 객체 인스턴스의 상태인 속성만 저장했다가 필요할 때 불러와서 복구하면 된다. 객체가 단순하면 객체의 ..
영속성(Persistence) 영속성은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. 결국 영속성은 특정 데이터 구조를 이전 상태로 복원할 수 있게 해 주어 프로그램의 종료와 재개를 자유롭게 해 준다. 이는 Layered Architecture에서 도메인 모델과 데이터베이스사이에 존재하며, 프로그램의 객체 정보를 DB에 저장하고, DB의 정보를 객체로 담아와 사용할 수 있도록 한다. Java에서는 영속성을 위해 JDBC를 지원해 주는데, JDBC에서 DB에 접근하여 SQL을 수행하고, 결괏값을 다시 데이터타입으로 매핑시켜 주는 작업을 개발자가 일일이 수행해야 ..