무한 반복 , 지루한코드가 반복된다..
컬럼하나를 추가해야되면?? 인서트.. 셀럭트... 업데이트 다넣어줘야되지..
패러다임의 불일치 -> 객체 vs 관계형 데이터베이스..
상속같은경우 sql 경우.. 두번 인서트..
조회 할때도 조인하고 필요한거에 따라 다 따로 조회...
연관관계도 객체도 테이블에 맞춰서 모델링
객체 모델링 /자바 컬렉션
모든 객체를 미리 로딩할 수는 없다.
계층형 아키텍처 진정한 의미의 계층 분할이 어렵다.
이런 여러가지 이유로
많은 코드를 작성해야되고 데이터 중심적 개발을 할 수 밖에없다..
객체를 자바 컬렉션에 저장 하듯이 DB에 저장하기 위해
JPA -JAVA PERSISTENCE API 탄생
ORM?
Object-relational mapping(객체 관계 매핑)
-객체는 객체대로 설계 / 관계형 데이터베이스는 관계형 데이터베이스 로 설계
-ORM 프레임워크가 중간에서 연결(매핑)
대중적인 언어는 대부분 ORM 존재함
jpa는 인터페이스의 모음
하이버네이트 , EclipseLink, DataNucleus 3가지 구현체
대부분 하이버네이트씀
신뢰할 수 있는 엔티티 계층
지연로딩을 이용해 객체 그래프를 자유롭게 탐색가능.
-- 같은 트랜잭션 안에서는 같은 엔티티반환 -> 약간의 조회 성능 향상. //많이 차이는 없다..
-- DB Isolation Level이 Read Commit 이어도 애플리케이션 에서 RepeatableRead 보장.
지연 로딩 : 객체가 실제 사용될 때 로딩
즉시 로딩: Join SQl로 한번에 연관된 객체까지 미리 조회