일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- http
- DB방언
- 무상태프로토콜
- 캐쉬가능
- @Table
- 데이터베이스 방언
- HTTPMESSAGE
- gitreset
- 네이버 연결된 서비스
- 자바ORM표준프로그래밍
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- SpringBoot
- Transaction not successfully started
- Invalid bound statement (not found)
- 멱등활용
- 김영한JPA
- Git
- gitrevert
- anyMatch
- HTTP3
- RFC723x
- org.apache.ibatis.binding.BindingException
- KAKAOLOGINAPI
- 매핑정보가없는필드
- hibernate.dialect
- fixedDelay
- @Entity
- JPA
- initialDelay
- 네이버로그인API
- Today
- Total
목록전체 글 (132)
twocowsong
연관관계가 있는 엔티티를 조회하는 방법은 크게 2가지입니다. - 객체 그래프 탐색(객체 연관관계를 사용한 조회) - 객체지향 쿼리 사용(JPQL) 방금 저장한 대로 회원1, 회원2가 팀1에 소속되어있습니다. 객체 그래프 탐색 member.getTeam()을 사용해서 member와 연관된 team엔티티를 조회할 수 있습니다. Member member = em.find(Member.class, "member1"); // 객체 그래프 탐색 Team team = member.getTeam(); System.out.println("팀 이름 : " + team.getName()); // 출력 결과 : 팀 이름 : 팀1 위처럼 객체를 통해 연관된 엔티티를 조회하는것을 객체 그래프 탐색이라고 합니다. - 객체지향 쿼리..
연관관계를 등록, 수정, 삭제, 조회 하는 예제를 통해 연관관계를 어떻게 사용하는지 알아보겠습니다. 1. 저장 연관관계를 매핑한 엔티티를 어떻게 저장하는지 아래의 코드로 알아보겠습니다. public class TestSave { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa-study"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); try { tx.begin(); // 비즈니스 로직 시작 // 팀1 저장 Team team = new Te..
@ManyToOne어노테이션은 N : 1 관계에서 사용합니다. 속성 기능 기본값 optional false 로 설정하면 연관된 엔티티가 항상 있어야 한다. true fetch 글로벌 페치 전략을 설정. casecade 영속성 전이 기능을 사용 targetEntity 연관된 엔티티의 타입정보를 설정. 이 기능은 거의 사용하지않습니다. @OneToMany private List members1; // 제네릭으 타입 정보를 알 수 있습니다. @OneToMany(targetEntity = Member.class) private List members2; // 제네릭이 없으면 타입정보를 알 수 없습니다. N : 1 (@ManyToOne)과 비슷한 1 : 1 (@OneToOne) 관계도 있습니다. 단방향 관계를 매..
@JoinColumn은 외래키를 매핑할 때 사용합니다. 속성 기능 기본값 name 매핑할 외래 키 이름 필드명 + _ + 참조하는 테이블의 기본 키 컬럼명 referencedColumnName 외래 키가 참조하는 대상 테이블의 컬럼명 참조하는 테이블의 기본키 컬럼명 foreignKey 외래 키 제약조건을 직접 지정할 수 있다. 이 속성은 테이블을 생성할 때만 사용한다. unique nullable insertable updatable columnDefinition table @Column의 속성과 같다. @JoinColumn 생략하면 외래 키를 찾을 때 기본 전략을 사용합니다. - 기본 전략 : 필드명 + _ + 참조하는 테이블의 컬럼명 - ex ) 필드명(tema) + _(밑줄) + 참조하는 테이블의 ..
객체만 사용한 연관관계와 테이블만 사용한 연관관계를 각각 알아보았지만 이제 JPA를 사용해서 둘을 매핑해보겠습니다. (기존 Member, Team 테이블은 똑같이 사용하겠습니다.) public class Member { @Id @Column(name="MEMBER_ID") private String id; private String username; @ManyToOne // MEMBER테이블과 TEAM테이블은 N : 1 임으로 ManyToOne를 사용하여 연결 @JoinColumn(name = "TEAM_ID") private Team team; // Getter, Setter... } public class Team { @Id @Column(name = "TEAM_ID") private String i..
CREATE TABLE MEMBER ( MEMBER_ID VARCHAR(255) NOT NULL, TEAM_ID VARCHAR(255), USERNAME VARCHAR(255), PRIMARY KEY (MEMBER_ID) ); CREATE TABLE TEAM( TEAM_ID VARCHAR(255) NOT NULL, NAME VARCHAR(255), PRIMARY KEY (TEAM_ID) ); MEMBER와 TEAM 테이블을 추가하였습니다. 다음 SQL을 실행시켜서 회원1, 회원2를 팀 1에 소속시켰습니다. INSERT INTO TEAM(TEAM_ID, NAME) VALUES('team1', '팀1'); INSERT INTO MEMBER(MEMBER_ID, TEAM_ID, USERNAME) VALUES (..
순수하게 객체만 사용한 연관관계를 살펴보겠습니다. public class Member { private String id; private String username; private Team team; public void setTeam(Team team) { this.team = team; } // Getter, Setter } public class Team { private String id; private String name; // Getter, Setter } 위에 2개의 객체가 있습니다. Member와 Team입니다. 아래의 소스코드를 통해 Member를생성 후 팀에 포함시키겠습니다. Member meber1 = new Member("member1", "회원1"); Member meber2 ..
연관관계 중에서는 N : 1 단방향 관계를 가장 먼저 이해해야 합니다. 지금부터 회원과 팀의 관계를 통해 N : 1 단방향 관계를 알아보겠습니다. - 회원과 팀이 있습니다. - 회원은 하나의 팀에만 소속될 수 있습니다. - 회원과 팀은 N : 1 관계입니다. (다수의 인원이 한팀에 가입할 수 있습니다.) 객체 연관관계 - 회원 객체는 Member.team필드로 팀 객체와 연관관계를 맺습니다. - 회원 객체와 팀 객체는 단방향 관계입니다. - 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없습니다. - 예를 들어 member -> team의 조회는 member.getTeam()으로 가능하지만 반대 방향인 team -> member를 접근하는 필드는 없습니다. 테이..