💡 인프런의 김영한 선생님 강의를 정리한 글입니다. 엔티티 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리함. 엔티티라고 부른다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수로 써야함 💡 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Entity 속성 속성 : name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을..
💡 인프런의 김영한 선생님 강의를 정리한 글입니다. 영속성 컨텍스트란? 💡 영속성 관리 (JPA 내부 구조) JPA를 이해하기 위해 영속성 컨텍스트를 이해해야 함 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 EntityManagerFactory와 EntityManager 1. EntityManagerFactory JPA는 EntityManagerFactory를 이용하여 entity를 관리한다. 어플리케이션 로딩 시점에 DB당 딱 하나만 생성되야 한다. WAS가 종료되는 시점에 EntityManagerFactory를 닫는다. 2. EntityManager 트랜잭션이 수행되는 단위마다 생성한다. 즉, 고객의 요청이 들어올..
💡 인프런의 김영한 선생님 강의를 정리한 글입니다. JPA 시작하기 전에.. JPA - 프로젝트 생성 H2 데이터베이스 최고의 실습용 DB이다. 가볍다. (1.5MB) 웹용 쿼리툴 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션 기능을 제공한다. 시퀀스, auto increment 기능 지원한다. 간단하게 db를 띄우지 않고 메모리로 실행할 수도 있다. 데이터베이스 방언 JPA는 특정 데이터베이스에 종속 X 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다. 가변 문자 : MySQL은 VARCHAR, Oracle은 VARCHAR2 문자열을 자르는 함수 : SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() 페이징 : MySQL은 LIMIT, Oracle은 ROW..
💡 인프런의 김영한 선생님 강의를 정리한 글입니다. JPA란? JPA(Java Persistence Api) = 자바 진영의 ORM 기술 표준 ORM (Object Relational Mapping) = 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크가 객체와 관계형 데이터베이스 중간에서 매핑해줌 대중적인 언어에 대부분 ORM 기술이 존재함 (ex : typescript도 type orm으로 제공한다.) 📕 어플리케이션과 JDBC 사이에서 동작한다. ⛏ JPA 동작 - 저장 ⛏ JPA 동작 - 조회 JPA 소개 [History] EJB-엔티티 빈 (자바 표준) -> 하이버네이트 (오픈 소스) -> JPA(자바 표준) 💻 JPA는 표준 명세 JPA는 인터페이스의 모음이다. (껍데기) JP..
💡 인프런의 김영한 선생님 강의를 정리한 글입니다. 객체 지향 언어와 관계형 데이터 베이스 객체 지향 언어를 이용한 애플리케이션은 보통 관계형 데이터 베이스에서 관리한다. 그러다 보니 SQL 중심적인 개발이 주를 이루게 된다. (CRUD → 지루한 코드를 무한 반복 함) 예를 들어 회원 객체를 만들었다면, 그에 해당하는 SQL을 짜게 되는데 만약 개발하다가 필드가 추가되면 짜놓은 SQL 쿼리들을 하나씩 다 수정해야 한다.. 즉, SQL에 의존적인 개발을 피하기 어렵다. 또, 객체와 관계형 데이터 베이스 사이의 패러다임의 불일치가 발생한다. 🤔 객체를 어떤 저장소에 보관해야 할까? RDB, NoSQL, FILE 등이 있는데, 현실적으로 FILE에 넣으면 검색을 할 수 없다. NoSQL은 대안이 될 수 있지..