JPA39 [Spring Data JPA] JPA 단방향 연관관계 ✔ 연관관계 매핑 기초객체가 지향하는 패러다임과 RDB가 지향하는 패러다임의 차이를 이해한다.객체와 테이블 연관관계의 차이를 이해한다.객체의 참조와 테이블의 외래 키를 어떻게 매핑하는가?방향(Direction)단방향, 양방향다중성(Multiplicity)일대다(1:N), 다대일(N:1), 일대일(1:1), 다대다(N:M)연관관계의 주인객체 양방향 연관관계는 관리가 필요✔ 연관관계가 필요한 이유객체지향 설계의 목표는 자율적인 객체들의 를 만드는 것이다협력 공동체✔ 예제 시나리오회원과 팀이 있다.회원은 하나의 팀에만 소속 될 수 있다.회원과 팀은 다대일 관계다.하나의 팀에 여러회원이 소속 된다.✔ 객체를 테이블에 맞추어 모델링✅ 연관관계가 없는 객체 (RDBMS 관점)✅ 객체를 테이블에 맞추어 모델링 하는 .. 2023. 4. 25. [Spring Data JPA] JPA 필드와 컬럼 기본키 매핑 ✔ 요구사항 정리회원은 일반 회원 & 관리자로 구성회원 가입일 & 수정일이 존재회원을 설명할 필드가 존재 해야한다.해당 필드는 길이 제한이 없다✔ @Column속성명 설명name필드와 매핑할 테이블의 컬럼명insertable등록 가능 여부 지정 (INSERT 가능 여부)updatable변경 가능 여부 지정 (UPDATE 가능 여부)nullablenull값 허용 여부, false 설정시 DDL 생성시 not null 제약 조건 붙는다unique한 컬럼에 유니크 제약 조건을 걸 때 사용columnDefinition데이터베이스 컬럼정보를 직접 줄 때 사용이된다length문자 길이에 대한 제약조건 설정✔ @Id기본키 매핑시 사용이 된다.✔ @EnumeratedJava에서 Enum 사용 시 Enumatrated .. 2023. 4. 25. [Spring Data JPA] JPA 자동 스키마 생성 ✔ 데이터베이스 스키마 자동 생성애플리케이션 실행 시점에 DDL(CREATE..) 자동 생성 해준다.객체(Entity)를 생성해두면 JPA가 모든 테이블을 자동 생성 해준다.DB 방언을 활용, DB에 맞는 적절한 DDL 생성.이렇게 생성된 DDL은 개발 서버에서만 사용해야 한다.생성된 DDL을 운영 서버에서는 사용 하면 안된다.✔ 데이터베이스 스키마 자동 생성 - 속성hibernate.hbm2ddl.auto결론은 validate, none만 사용하는 것을 지향해야 한다.create기존 테이블 삭제 후 다시 생성 (DROP + CREATE)create-dropcreate와 같으나 종료 시점에 테이블 DROPupdate변경 부분만 반영(운영 DB에서는 사용하면 안됨)추가만 되고, 삭제는 불가validate엔.. 2023. 4. 25. [Spring Data JPA] JPA 객체와 테이블 매핑 방식 ✔ 엔티티 매핑 소개객체와 테이블 매핑@Entity, @Table필드와 컬럼 매핑@Column기본 키 매핑@Id연관관계 매핑@ManyToOne, @JoinColumn객체와 테이블 맵핑@Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수주의할 부분기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)final 클래스, enum, interface, inner클래스를 사용하면 안된다필드에 final 사용하면 안된다참고 자료객체와 테이블 매핑 2023. 4. 25. [Spring Data JPA] 영속성 컨텍스트 ✔ JPA에서 가장 중요한 2가지객체와 RDB의 테이블을 어떻게 매핑? 영속성 컨텍스트, JPA 내부 동작이 어떻게 되는가?객체와 관계형 데이터베이스 매핑하기( Object Relational Mapping )객체와 관계형 데이터베이스를 어떻게 매핑할 것인가?DB와 객체를 어떻게 설계하고 중간의 JPA를 어떻게 사용할 것인가?영속성 컨텍스트실제 JPA가 내부에서 어떻게 동작 하는가?📌 영속성 컨텍스트 1-1JPA를 이해하는데 가장 중요한 용어엔티티를 영구 저장하는 환경영속성 컨텍스트는 눈에 보이지 않는다영속성 컨텍스트는 엔티티 매니저를 통해 접근한다EntityManager.persist(entity);여기서 persist 메서드는 DB에 저장하는게 아니라, 영속성 컨텍스트에 저장하는 것을 의미엔티티 매.. 2023. 4. 25. [Spring Data JPA] 프로젝트 생성 ✔ Hello JPA 프로젝트 생성H2 데이터베이스연습용 DB다른 DB에 비해 가벼움DB 시뮬레이션 가능시퀸스, AUTO INCREMENRT 기능 지원프로젝트 생성자바 8이상메이븐 설정groupId: jpa-basicartifacId: ex1-hello-jpaversion 1.0.0하이버네이트 공식 사이트Hibernate스프링 공식 사이트SpringHibernate가 결국 Spring F/W랑 엮이는 부분이 있음Spring -> Projects -> Spring Boot -> LearnSpring boot 버전 확인 후스프링 프로젝트 생성Spring Project InintalizeJPA 설정JPA 설정 파일: - 위치: /META-INF/persistence.xml - persistence-unit.. 2023. 4. 25. [Spring Data JPA] SQL 중심 개발의 문제점 ✔ SQL 중심적인 개발의 문제점SQL을 작성해서 개발을 진행?CRUDINSERT INTO...UPDATE...SELECT...DELETE...자바 객체를 SQL로 표현...SQL을 자바 객체로...무한반복, 지루한 코드결국은 개발자가 SQL을 다 작성해야 한다객체 CRUDpublic class Member { private String memberId; private String name; ..}INSERT INTO MEMBER(MEMBER_ID, NAME) VALUESSELECT MEMBER_ID, NAME FROM MEMBER MUPDATE MEMBER SET ...회원 테이블 생성 후, 회원 객체를 생성한다기본 SQL 작업을 수행한다기획자가 갑자기 요구사항을 변경한다변경 되어야 하.. 2023. 4. 25. [Spring Data JPA] JPA를 통한 Application 개발 ✔ JPA 구동 방식설정 정보 조회Persistence 객체를 통해 EntityManagerFactory 객체를 얻는다EntityManagerFactory 객체를 통해 EntityManager 객체를 획득JPA 동작 확인public void main(String[] args) { //EntityMangerFactory 객체 획득 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //EntityManager 객체 획득 EntityManager em = emf.createEntityManager(); em.close(); emf.close();}Persistence.createEntityMa.. 2023. 4. 25. [Spring Data JPA] JPA란? ✔ JPA란?JPA란 Java Persistence API의 약자로, 자바 진영의 ORM 표준을 의미한다.JPA와 SQL-Mapper( Mybatis, iBatis )를 비교객체를 중심으로 개발 진행 가능데이터 엔티티의 신뢰성 보장테이블 변경 및 관리에 더욱 더 효과적엔티티의 컬럼을 변경하면 알아서 반영이 된다관계형 RDBMS처럼 테이블 중심이 아닌 객체 중심 개발이기 때문에기본 CRUD, 페이징 처리, 부가 기능이 미리 제공되어 있다.✔ ORM?Object-relational mapping( 객체 관계 매핑 )객체는 객체대로, DB는 DB대로 설계 후 ORM이 중간에서 매핑대중적인 언어에는 대부분 ORM 기술이 존재Mybatis ( SQL-MAPPER )iBatis ( SQL-MAPPER )JPA ( .. 2023. 4. 25. 이전 1 2 3 4 다음