엔티티 매핑의 종류 객체와 테이블 매핑 : @Entity, @Table 필드와 칼럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 객체와 테이블 매핑 1. @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. 주의할 점 기본 생성자 필수이다. 파라미터가 없는 public 또는 protected 생성자 필수이다. final 클래스, enum, interface, inner 클래스는 사용하지 않는다. 저장할 필드에 final 사용하지 않는다. 속성은 name이라는 것이 존재한다. JPA에서 사용할 엔티티 이름을 지정한다. 기본값은 클래스 이름을 그대로 ..
Spring JPA 공부/자바 ORM 표준 JPA 프로그래밍
JPA에서 가장 중요한 2가지는 객체와 관계형 데이터베이스 매핑하기와 영속성 컨텍스트 라고 한다. 저번 시간에 실습을 하면서 배운 엔티티 매니저 팩토리와 엔티티 매니저와의 관계이다. 요청이 들어올 때마다 entityManager가 생성이 되고 커넥션을 사용하게 되면 DB와 연결되는 형식이다. 영속성 컨텍스트 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어이다. 쉽게 말해 엔티티를 영구 저장하는 환경이라는 뜻이다. EntityManager.persist(entity);를 할 경우 entity를 영속성 컨텍스트에 저장한다는 뜻이다. 영속성 컨텐스트는 논리적인 개념이고 눈에 보이지 않는다. 그리고 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하게 된다. 엔티티의 생명주기 비영속(new/transient..
JPA 프로젝트 생성 이 강의에서는 H2 데이터베이스와 메이븐을 사용해 JPA를 실습한다. 라이브러리 추가 - pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 17 17 UTF-8 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 javax.xml.bind jaxb-api 2.3.1 주의 사항 1. 자바 버전 11 이후부터는 org.hibernate와 com.h2 database가 기본으로 안 들어있다. 그래서 javax.xml.bind를 dependency 해줘야 한다. 2. com2.h2databse의 버전은 내가 다운로드한 버전과 일치해야 한다. 3. 하이버네이트의 버전은 내가 사용..
저번 강의에서 왜 JPA를 공부해야 하는지 배웠다. 이번 강의에서는 JPA가 무엇인지 배웠다. JPA란? Java Persistence API로 자바 진영의 ORM 기술 표준이다. ORM이란? Object-relational mapping(객체 관계 매핑)이라는 뜻으로 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다는 뜻이다. ORM프레임워크가 중간에서 매핑을 해준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. JPA 동작 저장 위 그림은 강의 시간에 배운 JPA를 사용하여 저장할 때 JPA가 처리하는 과정을 보여준다. JPA가 SQL로 구현해야 할 부분을 모두 처리해주는 것을 알 수 있다. 조회 위 그림은 조회를 하는 부분인데 저번 시간에 배운 SQL구문을 사용하지..
지금 시대는 객체를 관계형 DB에 저장해 관리하는 것을 매우 중요하게 여기고 있다. 이것을 관리하기 위해 전통적으로 계속 쓰였던 것이 SQL이다. 하지만 SQL 중심으로 개발을 하면 여러 가지 문제점에 직면하게 된다. SQL 중심적인 개발의 문제점 1. 무한 반복, 지루한 코드 이번에 학교에서 jdctemplete을 공부하면서 느꼈다. 코드가 무한 반복이고 너무 길어 노가다라는 느낌을 많이 받았다. 2. SQL에 의존적인 개발을 피하기 어렵다. 객체를 영구 보관하는 다양한 저장소 중 제일 많이 사용하는 것은 관계형 데이터베이스이다. 관계형 데이터베이스를 사용하게 되면 객체에서 SQL변환 후 SQL이 관계형 데이터베이스에 들어가야 하는 많은 절차를 따르게 된다. 이렇게 되면 SQL을 잘 사용하고 SQL에 ..