목록Spring (3)
ggoggo

다대다(M:N) 관계란 두 개의 테이블이 서로의 행에 대해서 여러개로 연관되어 있는 상태를 다대다(M:N)관계라 한다. 예를 들어 하나의 상품이 여러 구성성분들로 이루어져 있고, 한 구성 성분들은 여러 상품들에 구성되어지는 관계를 말한다. 구현은? 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계가 가능하다. 위의 예시처럼 JPA의 @ManyToMany 어노테이션을 사용해 객체의 다대다 관계를 구현하고 테이블 상에서 연결 테이블이 존재하면 된다. 하지만 이 방식을 지양되어져야 한다. 조인 테이블 자체에 주문시간, 수량 같은 추가 정보를 넣을 수 없다. 개발 상에서 연결 테이블이 엔티티로 보이지 않기 때문에 예상하지 못하는 쿼리들이 나간다. 따라서 연결 테이블을 엔티티로 승격 시켜야 한다. @ManyToM..

JPA란? JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 말한다. 여기서 ORM 기술이란 말 그대로 객체와 관계형 데이터 베이스를 매핑해주는 기술이다. 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑해준다. JPA는 라이브러리가 아닌 ORM을 사용하기 위한 인터페이스의 모음이다. JPA는 인터페이스의 모음, 단순한 명세이기 때문에 구현이 없다. 자바 애플리케이션에서 관계형 데이터베이스를 어떻게 사용할 지 정의하는 하나의 방법일 뿐이다. 따라서! JPA의 구현체가 있어야 JPA를 사용할 수 있다. Hibernate란? Hibernate는 JPA를 구현한 구현체이다. 개발된 지 10년이 넘은 대..

객체 지향 프로그램에서의 객체와 RDB에서의 테이블이 서로 연관관계를 맺는 방법이 다르다. 따라서 이 둘의 차이를 채우기 위한 매핑 과정이 필요하고 이를 ORM인 JPA가 수행하게 된다. ORM이란? 영속성(Persistence) 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. Object Persistence(영구적인 객체) : 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용해 영구적으로 저장하여 영속성을 부여한다. JDBC, Spring JDBC(ex. jdbcTemplate), Persistence Framework(ex. ..