@Entity 내용: 해당 클래스가 엔티티임을 나타내는 어노테이션입니다. 설명: JPA가 해당 클래스를 데이터베이스 테이블과 매핑합니다. 예제: @Entity @Table(name = "users") public class User { //... } @Id 내용: 해당 필드가 엔티티의 식별자(primary key)임을 나타내는 어노테이션입니다. 설명: 엔티티의 식별자 필드를 지정할 때 사용합니다. 예제: @Id private Long id; @Table 내용: 엔티티와 매핑될 테이블의 이름을 지정하는 어노테이션입니다. 설명: 엔티티를 매핑할 테이블의 이름을 지정합니다. 예제: @Entity @Table(name = "users") public class User { //... } @Column 내용: 엔..
프록시 프록시란 데이터베이스 조회를 지연할 수 있는 가짜 객체로써 실제 사용하는 시점에서 DB를 조회하도록 도와준다. 실제 객체와는 겉모양이 같고, 실제 객체에 대한 참조를 보관하고있다. 또, 프록시 객체를 호출하면 실제 객체의 메소드를 호출한다. 보통 객체를 조회할 경우 em.fine()를 사용하지만, 프록시 객체를 사용하기 위해선 em.getReference()를 사용한다. 아래 예시를 참고해보자, DB를 조회하지도않고 실제 객체를 생성하지도않는다. Member member = new Member(); member.setUsername("아이유"); em.persist(member); em.flush(); em.clear(); // 처음 Id값은 존재하기에 Member findMember = em.g..
고급매핑 - 상속관계 매핑 상속관계매핑이란, 객체의 상속 구조와 관계형DB의 슈퍼타입과 서브타입의 관계를 매핑하는것이다. 상속관계의 매핑에서 슈퍼타입과 서브타입의 논리모델을 실제 물리 모델로 구현하는방법은 아래와 같다. 가. 각각 테이블로 변환하는 조인전략 나. 통합테이블로 변환하는 단일 테이블 전략 다. 서브타입 테이블로 변환하는 구현 클래스마다 테이블 전략 위 전략을 사용하면서 함께 쓰이는 어노테이션은 아래와 같다. // 부모클래스에 작성한다. @Inheritance(strategy=InheritanceType.XXX) // JOINED // SINGLE_TABLE // TABLE_PER_CLASS // 부모클래스에 구분자 컬럼을 지정한다. @DiscriminatorColumn(name="DTYPE"..
다양한 연관관계 매핑 연관관계 매핑 시 고려사항 3가지 다대일 [N:1] 일대다 [1:N] 일대일 [1:1] 다대다 [N:M] 실전 예제 - 3. 다양한 연관관계 매핑 첫번째, 연관관계 매핑 시 고려사항 3가지 다중성 다대일: @ManyToOne 실무에서 가장 많이 사용 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany 실무에서 사용하면 안됨 다대일 AND 일대다로 풀어서 사용한다. 단방향, 양방향 테이블 외래키 하나로 양쪽 조인 가능 사실 방향이라는 개념은 없다 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 연관관계의 주인은 외래키를 관리하는 참조 주인의 반대편은 단순 조회만 가능하다. 다대일 [N:1..
양방향 연관관계와 연관관계의 주인2 - 주의점, 정리 tx.begin(); //팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); //회원 저장 Member member = new Member(); member.setUsername("member1"); member.setTeam(team); em.persist(member); // em.flush(); // em.clear(); // team.getMembers().add(member); Team findTeam = em.find(Team.class, team.getId()); List members = findTeam.getMembers(); 위와 같이 실행했을 경우, 마지막 라..
w영속성 관리 - 내부 동작 방식 정리 JPA에서 가장 중요한 2가지는 무엇일까? 첫번째, 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping)이다. - DB를 어떻게 설계할것인지 이에따라 JPA는 어떻게 사용할 것인지 중요하다. 두번째, 영속성 컨텍스트이다. JPA는 어떻게 작동할 것인지에 대한 이해가 중요하다. 즉, 영속성 컨텍스트를 이해해야하는데 이는 엔티티를 영구 저장하는 환경이라는 뜻으로, 아래 명령어 진행 시 엔티티를 영속성 컨텍스트에 저장하겠다는의미 입니다. EntityManager.persist(entity); em.find(EntityClass.class, entity); 영속성 컨텍스트는 눈에 보이지 않는 논리적인 개념으로써, EntityManager를 생..
영속성 컨텍스트2 1. 엔티티 조회, 1차캐시 영속성 컨텍스트(entityManager)는 1차캐시를 들고있습니다. @Id 는 해당 Table의 PK가 됩니다. @Entity는 해당 객체자체가 됩니다 (ex: member) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); // 1차 캐시에 저장됨 em.persist(member); // 1차 캐시에서 조회 Member findMember = em.find(Member.class, "member1"); member객체를 저장하면 캐시로 인해 조회가 가능합니다. em.find를 통해 조회를 하려고하면 JPA는 영속성컨텍스트에서 DB를 보는게 아니라 1차캐시를..
영속성 관리 JPA에서 가장 중요한 2가지는 아래와 같습니다. 객체와 관계형 데이터베이스 매핑하기() DB를 어떻게 설계하고 매핑할 것인지 영속성 컨텍스트 실제 JPA는 어떻게 동작하는지 이해하기 JPA를 쓰게되면 엔티티 매니저 팩토리와 엔티티 매니저를 이해해야합니다. 웹 어플리케이션 개발 시 고객의 요청이 온다면 EntityManager 생성이 됩니다. EntityManager는 DB Connection을 생성합니다. 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어로써 엔티티를 영구 저장하는 환경 이라고 합니다 아래 코드는 해당객체를 DB저장하는것 뿐만 아니라, 엔티티 매니저를 통해 엔티티를 영속성 컨텍스트라는 공간에 저장한다는 의미입니다. EntityManager.persist(entity)..
- Total
- Today
- Yesterday
- MAC
- Intellij
- map
- AnnotationConfigApplicationContext
- docker
- 자바8
- install
- Vuex
- container
- java
- elasticsearch
- 스트림
- 차이
- stream
- Vue
- vscode
- webpack
- 최종연산
- 람다
- ngnix
- mvn
- nginx
- NPM
- springboot
- 중간연산
- JPA
- ApplicationContext
- lambda
- BeanFactory
- 영속성 컨텍스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |