ㅁ오랜만에 JPA 포스팅 JPA는 데이터베이스를 객체지향으로 표현한 ORM이라고 알고 있다. 그렇다는 소리는 객체지향 처럼 상속을 제공한다는 뜻이 된다. 일반적으로 상속은 extends를 사용하게 되어진다. 간단하게 코드를 작성해봤다. @Entity public abstract class School { @Id @GeneratedValue private Long id; private String name; } @Entity public class HighSchool extends School {} 이렇게 작성하고 나서 SQL를 확인했다. create table School ( DTYPE varchar(31) not null, id int8 not null, name varchar(255), primary..
JPA에서 공부하면서 곰곰히 생각해봤다. 내가 과연 어떻게 테이블을 작성했는지... 또, 마이바티스를 어떻게 이용했는지 생각해봤다. 1년전에 보이지 않는 내용들이 점차 눈에 들어오기 시작했다. 가장 눈에 띄이는건 JOIN관계다. 애초에 테이블을 만들때 JOIN을 사용하지 않는다. SQL은 반드시 외래키를 사용해야 된다는 제약 사항이 전혀 없다. 오히려 외래키를 사용하지 않고 DB를 구축하기도 한다. 그래서 JOIN문을 사용할때 외래키를 사용하지 않고 쿼리 작성하는것이 가능하다. 신기하게도? JPA는 JOIN문을 쿼리 생성하기 전에 미리 만들어 둔다. 무조건 JOIN문을 사용해야 되는것은 아니지만, 이러한 점이 SQL을 작성할때와의 차이점이라 생각이 든다. 그렇다면 어째서 JPA는 이러한 전략을 택했을까?..
Jpa를 공부하다보면 제일 먼저 Entity를 만나볼 수 있습니다. 이걸 보고 있으면 객체이면서 테이블 같은 오묘한 기분을 느낄 수 있습니다. 이는 사실 JPA의 특징의 영속성과 큰 연관이 있습니다. 영속성 영속성이라는 것은 한 객체가 생성 작업이 종료 되었음에도 지속적으로 존재하는 상태라는 것을 말합니다. 물론 억지로 close같은 걸 이용하거나 프로그램을 강제로 종료 시킨다면 소멸 되겠지만 그렇지 않으면 웬만하면 죽지 않습니다. 그게 바로 영속성입니다. 근데 어째서 JPA에서는 영속성이라는 용어를 사용하면서 관리를 하는 걸까요? 그건 바로 객체를 이용해서 테이블을 생성하고 이용하고 싶기 때문이라고 생각합니다. 물론 마이바티스 처럼 자바에서 쿼리를 작성해서 DB에 연동시키는 게 더 좋을거라 생각할지도 ..