JPA

상속관계 매핑: 객체의 상속 관계와 DB의 슈퍼타입, 서브타입 관계 매핑 객체는 상속관계 존재 RDB는 상속관계 X 슈퍼타입, 서브타입 관계라는 유사한 논리 모델링 기법 존재 이 논리 모델을 물리 모델로 구현하는 방법 1. 조인 전략 2. 단일 테이블 전략 3. 구현 클래스마다 테이블 전략 객체 입장에서는 아무 변화가 없고, DB설계를 어떻게 할 것이냐 결정하는 것 JPA는 세가지 방법 모두 지원 (기본 설정: 단일 테이블 전략) // Item class @Entity public class Item { @Id @GeneratedValue private Long id; private String name; private int price; // Album class @Entity public class ..
다대일 (복습, 제일 중요!)단방향양방향일대다 (권장하지 않음)DB는 설계상 다 쪽에 외래키가 설정될 수 밖에 없다Member 객체에서 Team 객체를 탐색하는 것이 적어도 Member 쪽에 외래키 매핑하는 것을 권장(다대일 양방향 권장)@JoinColumn 사용하지 않으면 조인 테이블을 생성함 단방향// Team class@OneToMany@JoinColumn(name = "TEAM_ID")private List members = new ArrayList(); Member member = new Member();member.setUsername("member1");em.persist(member); // -> insert SQLTeam team = new Team();team.setName("TeamA..
객체를 테이블에 맞춰 데이터 중심으로 모델링하면 협력 관계를 만들 수 없다 - 테이블은 외래 키로 조인을 사용해 연관된 테이블을 찾는다 - 객체는 참조를 사용해 연관된 객체를 찾는다 단방향 연관관계 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; private int age; // @Column(name = "TEAM_ID") // private Long teamId; @ManyToOne // JPA에 다대일 연관관계가 있음을 알려줌 @JoinColumn(name = "TEAM_ID") // 외래키 매핑 private Team team; // 객체 ..
1. API(Application Programming Interface) 애플리케이션: 고유한 기능을 가진 모든 소프트웨어 프로그래밍: 프로그래밍 방식으로 인터페이스: 애플리케이션 간의 통신 규약 즉, 클라이언트 요청과 서버 응답의 구성 방법을 약속해 놓은 것이다 https://aws.amazon.com/ko/what-is/api/ 2. Client / Server 클라이언트 서버 모델: 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간에 작업을 분리해주는 분산 애플리케이션 구조이자 네트워크 아키텍처 https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8_%EC%84%9C%EB%B2%84_%EB%AA%A8%EB%..
객체와 테이블 매핑 @Entity // JPA가 관리하는 엔티티, 동명의 클래스 없다면 이름 설정 X //@Table(name = "USER") // 클래스명이 DB 테이블명과 불일치 한다면 매핑 가능 public class Member { 기본 생성자 필수 final 클래스, enum 클래스, 중첩 클래스, 인터페이스 사용 X 저장할 필드에 final 사용 X DB 스키마 자동 생성: 애플리케이션 실행 시점에 DDL 자동 생성 (테이블 만들어 놓고 시작) 객체 중심적으로 매핑해놓으면 JPA가 알아서 테이블은 만들어 줌 DB 방언 설정으로 적절한 DDL 생성 -> 개발 장비에서만 사용 운영 서버에서는 사용하지 않거나, 잘 다듬어서 사용 옵션 설명 create 기존 테이블 삭제 후 다시 생성 (DROP -..
1. 영속성 컨텍스트: 엔티티를 영구 저장하는 환경눈에 보이지 않는 논리적 개념엔티티 매니저를 통해 영속성 컨텍스트에 접근환경J2SE (기본 자바)J2EE (프레임워크)엔티티 매니저 : 영속성 컨텍스트1:1N:1엔티티의 생명주기비영속: 객체를 생성한 상태, Member member = new Member();영속: 객체를 영속 컨텍스트에 저장한 상태 (JPA가 인식하고 관리해줄 수 있는 상태), em.persist(member);실제 DB 저장은 트랜잭션 커밋 시에 이루어짐준영속: 객체를 영속 컨텍스트에서 분리한 상태, em.detach(member);삭제: 객체를 삭제한 상태, em.remove(member);2. 영속성 컨텍스트 사용 이점 엔티티 조회1차 캐시 -> 같은 트랜잭션 내에서 이루어진 조회..
1. 환경 세팅 h2 database 사용 maven 설정 hibernate 버전은 사용하고자 하는 스프링 버전에 맞는 것으로 설정하면 좋다 spring.io -> projects -> spring boot -> Learn -> 스프링 버전에 맞는 doc -> 'org.hibernate'로 검색해 버전 확인 h2는 설치한 버전과 같아야 한다 JPA 설정: /META-INF/persistence.xml persistance-unit에 name속성으로 이름 지정 javax.persistence.~~ : JPA 표준 속성 hibernate.~~ : hibernate 전용 속성 DB 방언: DB마다 구문에 차이가 있기 때문에 어떤 방언을 사용할 것인지 알려주어야 한다 hibernate는 40가지 이상의 DB 방..
JAVA 진영에서의 ORM 표준 기술인 JPA의 필요성은 여러 자료를 통해 머리로는 대충 알고 있었지만, 영한님 설명을 통해 좀 더 와닿게 되었다 1. 상속 Item 객체를 상속받은 Album 객체를 RDB에 저장할 때 앨범을 필드단위로 분해하여 우측의 ITEM, ALBUM 테이블에 각각 적절하게 저장해주기 위해 INSERT SQL문도 각각 작성하여 두번 날려야 한다 DB에서 ALBUM 객체를 조회할 때는 우측의 ITEM, ALBUM 테이블을 JOIN SQL문으로 묶어주고 그것을 다시 객체로 매핑해준 후 반환한다 이렇게 SQL 의존적이고 복잡한 과정을 피하기 위해 DB에 저장할 객체에는 상속관계를 사용하지 않게 된다고 한다 2. 연관관계 객체 지향적으로 모델링하는 경우에 저장할 때는 크게 문제가 없다 대..
스프링 웹 개발 기초 정적 컨텐츠: 관련 컨트롤러가 없어 바로 관련 html을 클라이언트에 넘겨줌 (우선순위 최하위) MVC: 컨트롤러가 (사용자에게 데이터를 받고) 모델에 처리한 후 뷰 리솔버가 이를 반영한 html을 클라에 넘겨줌 API: 컨트롤러가 (사용자에게 데이터를 받고) 이를 넘겨받은 HttpMessageConverter가 문자나 객체를 http body에 직접 넣어 클라에 보내줌 일반적인 웹 애플리케이션 계층 구조 테스트 케이스 작성 (단위 테스트) main 메소드나 컨트롤러에서 눈으로 보는 테스트보다 테스트 파일을 따로 만들어 프레임워크를 활용하기 테스트 순서에 의존관계가 있지 않게 @AfterEach로 db 초기화, @BeforeEach로 객체 새로 생성 및 DI Assertions.as..
hjkim0502
'JPA' 태그의 글 목록 (2 Page)