
다중성 - 다대일 : @ManyToOne - 일대다 : @OneToMany - 일대일 : @OneToOne - 다대다 : @ManyToMany ㄴ 다대다는 실무에서는 사용하면 안된다 테이블 - 외래 키 하나로 양쪽 조인 가능 - 사실 방향이라는 개념이 없음 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단 방향 - 양쪽이 서로 참조하면 양방향 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 - 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래키를 관리할 곳을 지정해야 함 - 연관관계의 주인: 외래 키를 관리하는 참조 - 주인의 반대편 : 외래 키에 영향을 주지 않음, 단순 조회만 한다...

연관관계의 주인에 값을 입력하지 않음 Member member = new Member(); member.setUsername("member1"); em.persist(member); Team team = new Team(); team.setName("TeamA"); team.getMembers().add(member); em.persist(team); 이렇게 주인쪽으로 저장해주지 않으면 저장안됌 Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); member.setTeam(team); em.persist(member); em.flus..

위의 테이블 연관관계를 보면 MEMBER에서 TEAM_ID를 가지고 있기에 MEMBER에서는 TEAM을 알 수 있다. 하지만 TEAM에서는 당연하게 MEMBER_ID가 없다. 원래 대로라면 다대일 관계이기에 TEAM이 갖고있는 MEMBER들을 얻기 위해서는 MEMBER에서 TEAM을 조회해야만 알 수 있다. 양방향 객체 연관관계를 보면 TEAM은 MEMBER LIST를 가지고 있는 것으로 된다. 객체지향 관점으로 봤을 때에는 TEAM은 여러 멤버들이 속해 있기 때문이다. member @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; team @OneToMany(mappedBy = "team") //mappedBy는 나는 무엇과 연결되어있지? 라면 Me..

해당 테이블 같을 때에 멤버가 팀에 소속되긱에 멤버(N) : 팀(1)의 관계가 된다. 객체관계에서는 TEAM_ID를 가지고 있는 것은 객체지향스럽지 않다고 한다. TEAM 객체 자체를 가지고 있어야한다. TABLE 관점에서는 TEAM_ID를 가지고 있는 것이 맞다. MEMBER 객체 안에 TEAM_ID가 아닌 TEAM 자체를 넣어준다. @ManyToOne @JoinColumn(name="TEAM_ID") private Team team; MEMBER가 N이기 떄문에 @MantToOne 관계라는 것을 어노테이션해준 뒤 DB에게 알려줄 JoinColumn을 알려준다. 이건 내가 team을 찾기 위해 필요했던 FK를 생각하면 된다. Team team = new Team(); team.setName("TeamA..
Id를 직접 할 당할 경우 : @Id Id를 자동 생성 할 경우 @GeneratedValue (쉬운 예로 db의 Auto로 시퀀스 값을 올려주는 기능) IDENTITY : 데이터베이스에 위임, MYSQL (나는 잘 모르겠고 db야 너가 알아서 해주라 라는 느낌) > 기본 키 생성을 데이터베이스에 위임 > 주로 MySql, PostgreSQL, SQL server, DB2에서 사용 (예: MySQL의 AUTO_INCREMENT) > JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행 > AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 이후에 ID 값을 알 수 있음 > DENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL 실행 하고 DB에서 식별자를 조..

요구사항 추가 - 회원은 일반 회원과 관리자로 구분해야한다. - 회원 가입일과 수정일이 있어야 한다. - 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다. package helloJpa; import javax.persistence.*; import java.util.Date; @Entity @Table(name="member") //해주지 않는 경우 클래스 네임이 테이블네임이 된다. public class Member { @Id private Long id; @Column(name = "name") //db에는 name으로 들아간다. private String username; private Integer age; @Enumerated(EnumType.STRING) //db에는..
- Total
- Today
- Yesterday
- 로그인
- SpringBoot
- thymleaf
- react실행
- Intercepter
- Java
- 스프링부트
- 백엔드 개발자 역량
- React
- 항해99
- 백엔드 개발자 공부
- 향해플러스백엔드
- 리터럴
- 컨트
- filter
- jpa api
- 항해플러스
- 예외처리
- 향해플러스
- ArgumentResolver
- exception
- HTTP
- 향해99
- reject
- JPA
- 스프링공부
- rejectValue
- 인터셉터
- hypertexttransferprotocol
- BindingResult
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |