공부/JPA
-
3월 17일 공부 값타입 컬렉션공부/JPA 2023. 3. 17. 21:12
김영한 님의 강의를 들으면서 정리를 해야겠다.! 값 타입 컬렉션 값 타입 컬렉션을 DB 테이블로 구현할 때 문제가 발생한다. 컬렉션이 DB에 들어가야하는대 관계형 DB는 컬렉션을 담을 수 있는 구조가 존재하지 않는다. 따라서 1:n관계일때 n의 테이블을 따로 테이블로 뽑아내야 한다. 내가 지금 진행하고 있는 프로젝트를 예로 들면 사용자는 여러 개의 댓글을 작성할 수 있는대 user Entity에서는 List 필드로 값타입 컬렉션을 가지고 있다. 강의에서 설명과 같이 RDB는 컬렉션을 담을 수 있는 구조가 아니기 때문에 Reply 테이블을 새로 만들어 데이터를 관리해주고 있다. @Entity public class Member { @Id @GenerateValue @Column(name = "MEMBER_..
-
3월 14일 공부공부/JPA 2023. 3. 15. 00:34
오랜만에 강의 좀 들어보려고 한다. 나의 개발의 원천 김영한 님의 강의.. 반년 전에 3개의 강의를 결제했는데 아직도 다 듣지 못하였네 그만큼 안 들었다는 것이겠죠..? 값 타입과 불변 객체 Address address = new Address("city", "street","100000") Member member = new Member(); member.setUserName("member1"); member.setHomeAddress(address); em.persist(member); Member member2 = new Member(); member2.setUserName("member2"); member2.setHomeAddress(address); em.persist(member); membe..
-
김영한님의 JPA프록시 강의 정리공부/JPA 2023. 1. 2. 15:29
프록시란? public void printUserandTeam(String memberId) { Member member = em.find(Member.class,memberId); Team team = member.getTeam(); System.out.println("member Name = " + member.getName()); } Member 테이블과 Team테이블은 서로 연관관계를 맺고 있는 형태이다. 이때 위의 소스코드처럼 getName을 통해 Member테이블의 Name 속성만 조회하고 싶은대 Member 테이블과 Team테이블이 연관관계가 있다고 해서 DB에서 Member 테이블과 연관된 모든 테이블을 DB에서 가져오면 최적화가 잘되지 않은 것이고 성능을 저하시킬 수 있다. 이때 사용하는..
-
김영한님의 상속 관계매핑 강의정리공부/JPA 2022. 12. 31. 00:47
조인전략 Item을 상속받는 Album, Movie,Book 객체를 JPA에서 Join전략을 이용해 저장했을때 나타나는 DB의 물리적 모델이다. 상속받는 객체들은 부모객체의 PK를 PK,FK로 받아와서 DB를 설계한다. 예를 들어 Album table에 name과 price값을 넣어야 한다면 Item table에 Join을 해서 값을 넣게 된다. Item table은 각각의 상속받은 객체를 DTYPE으로 구분한다. 부모객체인 Item에 @Inheritance(strategy = InheritanceType.JOINED)를 선언해줘서 상속 매핑 전략 JOIN을 사용한다고 선언해준다. 물리적 모델의 그림처럼 상속받은 객체의 테이블에 부모객체의 item table에 pk인 item_id가 Column에 추가되..
-
JPA annotation 정리공부/JPA 2022. 12. 22. 13:35
DB 설계가 마무리되고 이제 JPA를 이용해 연관관계 매핑을 하나하나 해나가야 한다. 여름방학때 들었단 김영한님의 강의를 다시한번 들어서 정리하면서 해나가야 할거 같아서 강의를 듣고 다시 정리 하기로 했다. JPA annotation @Entity - JPA가 관리하는 클래스를 말하며 엔티티라고 한다 - JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다 - name 속성은 JPA가 내부적으로 클래스를 식별할때 사용하는 속성으로 기본값은 클래 스 이름을 그대로 사용한다. @Table - 엔티티와 매핑할 DB에 table을 지정해주는 것이다. - @Table(name = "test")이라고 가정하면 JpaTest 클래스는 DB에 test 테이블과 매핑을 하게 된다. insert쿼리를 날린다..