일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- javascript
- 다대다
- JS
- ORM
- python
- 영속성 컨텍스트
- SBERT
- 다대일
- 매핑
- web
- css
- Django
- 장고독학
- 노마드코더
- frontend
- 프론트엔드
- JPA
- TODO
- AWS
- nomadcoder
- 단방향
- 바닐라js
- html
- 트랜잭션
- React
- 장고
- 일대다
- clonecoding
- 플러시
- java
- Today
- Total
목록🌿 Spring & Spring Boot/📗 자바 ORM 표준 JPA 프로그래밍 (16)
꿈꾸는 새벽하늘
엔티티의 연관관계 매핑 시 고려사항 다중성: 다대일, 일대다, 일대일, 다대다 단방향, 양방향 연관관계의 주인 1. 다대일 다대일 관계의 반대 방향은 일대다 관계이고, 일대다 관계의 반대 방향은 항상 다대일 관계이다. 일(1), 다(N) 관계에서 외래 키는 다(N)쪽에 있으므로 객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다. 1) 다대일 단방향 [N:1] 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만, 팀은 회원을 참조하는 필드가 없는 연관관계 // == 회원 엔티티 == // @ManyToOne @JoinColumn (name = "TEAM_ID")// Member.team 필드를 TEAM_ID 외래 키와 매핑 private Team team; 2) 다대일 양방향 [N:1, 1:..
방향(Direction): 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향이다. 단방향: 둘 중 한 쪽만 참조하는 것 양방향: 양쪽 모두 서로 참조하는 것 다중성(Multiplicity) 다대일(N:1) 일대다(1:N) 일대일(1:1) 다대다(N:M) 연관관계의 주인(Owner): 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 한다. 1. 단방향 연관관계 객체 연관관계 회원 객체와 팀 객체는 단방향 관계 객체는 참조(주소)로 연관관계를 맺는다. => a.getB().getC() 사용 테이블 연관관계 회원 테이블과 팀 테이블은 양방향 관계 테이블은 외래 키로 연관관계를 맺는다. => 조인(JOIN) 사용 A JOIN B 와 B JOIN A 모두 가능 객체 그래프 탐색: 참조를 사용해서 객..
1. @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여주어야 한다. @Entity 적용 시 주의사항 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에 사용 불가 저장할 필드에 final 사용하면 안 됨 2. @Table @Table은 엔티티와 매핑할 테이블을 지정한다. 3. 데이터베이스 스키마 자동 생성 JPA는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다. persistence.xml에 아래 속성을 추가하면 애플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다. 4. 기본 키 매핑 JPA는 데이터베이스 기본 키 생성 전략을 두 가지 제공..
엔티티 매니저는 엔티티 저장, 수정, 삭제, 조회 등 엔티티 관련 모든 일을 처리한다. 따라서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스라고 생각해도 무방하다. 1. 엔티티 매니저 팩토리와 엔티티 매니저 // 엔티티 매니저 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("japbook"); // 엔티티 매니저 생성 EntityManager em = emf.createEntityManager(); 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 엔티티 매니저 팩토리를 하나만 생성한다. 위의 엔티티 매니저 팩토리 생성 코드를 실행하면 META-INF/persistence.xml에 있는 정보를 바탕으로 엔티티..
예제 프로젝트를 공부하기 위해 먼저 IDE를 설치하고 프로젝트를 불러온 뒤, H2 데이터베이스를 설치한다. 프로젝트는 Maven > Existing Maven Projects를 통해 불러온다. H2 데이터베이스는 JVM 메모리 안에서 실행되는 임베디드 모드와 실제 데이터베이스처럼 별도의 서버를 띄워서 동작하는 서버 모드가 있다. 지금은 H2 데이터베이스를 서버 모드로 실행한다. 1. 라이브러리와 프로젝트 구조 JPA 구현체로 하이버네이트를 사용하기 위한 핵심 라이브러리는 다음과 같다. hibernate-core: 하이버네이트 라이브러리 hibernate-entitymanager: 하이버네이트가 JPA 구현체로 동작하도록 JPA 표준을 구현한 라이브러리 hibernate-jpa-2.1-api: JPA 2...
1. SQL을 직접 다룰 때 발생하는 문제점 자바로 개발하는 애플리케이션은 대부분 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소인 '관계형 데이터베이스'를 데이터 저장소로 사용한다. 이러한 데이터베이스에 데이터를 관리하려면 SQL을 사용해야 한다. 자바 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베이스에 전달하는데 이렇게 SQL을 직접 다루면 아래와 같은 문제들이 발생하게 된다. 반복되는 수많은 SQL과 JDBC API코드 작성 SQL에 의존적인 개발 - 진정한 의미의 계층 분할이 어렵고 엔티티 신뢰 불가 2. 패러다임의 불일치 도메인 모델을 객체로 모델링하면 객체지향 언어가 가진 장점들을 활용할 수 있다. 그러나 이를 저장하는 과정에서 문제가 발생하게 된다. 객체는 관계형 데이터베이스에..