본문 바로가기

JPA 프로그래밍

[자바 ORM 표준 JPA 프로그래밍] 연관관계 매핑 기초 - 단방향 연관관계 ( 1/3 )

- 목표

  • 객체와 테이블 연관관계의 차이를 이해
  • 객체의 참조와 테이블의 외래 키를 매핑

※ 인프런 또는 유투브 강의를 보고 진행하는 것을 추천합니다. 이전 소스와 구분 가능하도록 주석 및 파일을 분리 했으나 보기 힘들 수 있습니다.

 

- 객체를 테이블에 맞추어 데이터 중심으로 모델링할 경우, 협력 관계를 만들 수 없다.

  • 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
    • SELECT * FROM MEMBERRELATION M JOIN TEAM T ON M.TEAM_ID= T.TEAM_ID
  • 객체는 참조를 사용해서 연관된 객체를 찾는다.
  • 테이블과 객체 사이에는 이런 큰 간격이 있다.
...
try
...
			// 객체를 테이블에 맞추어 데이터 중심으로 모델링 진행
            Team team = new Team();
            team.setName("TeamA");
            em.persist(team);

            MemberRelation memberRelation = new MemberRelation();
            memberRelation.setUserName("member1");
            // member1 을 Team!에 소속시키고 싶다.
            memberRelation.setTeamId(team.getId());
            em.persist(memberRelation);

            MemberRelation findMember = em.find(MemberRelation.class, memberRelation.getId());

            Long findTeamId = findMember.getTeamId();
            Team findTeam = em.find(Team.class, findTeamId);
            
...

https://github.com/oss0202/ex1-hello-jpa/blob/master/src/main/java/relationmappingbasic/JpaMainrRelation.java

 

oss0202/ex1-hello-jpa

JPA Hello World. Contribute to oss0202/ex1-hello-jpa development by creating an account on GitHub.

github.com

 

 

- 단방향 연관관계

- 객체 지향 모델링( 객체 연관관계 사용 )

	MemberRelation
    ...
    // 단방향 연관관계
    @ManyToOne
    @JoinColumn(name ="TEAM_ID")
    private Team team;
    ...

			...
            // 객체를 테이블에 맞추어 데이터 중심으로 모델링 진행
            Team team = new Team();
            team.setName("TeamA");
            em.persist(team);

            MemberRelation memberRelation = new MemberRelation();
            memberRelation.setUserName("member1");
            // member1 을 Team!에 소속시키고 싶다.
            memberRelation.setTeam(team);
            em.persist(memberRelation);

            //영속성 컨텍스트가 아닌 DB에서 조회해 오고 싶다면 -S
            em.flush();// 쿼리 실행
            em.clear();// 영속성 컨텍스트 삭제
            //영속성 컨텍스트가 아닌 DB에서 조회해 오고 싶다면 -E

            MemberRelation findMember = em.find(MemberRelation.class, memberRelation.getId());

            Team findTeam = findMember.getTeam();
            System.out.println("findTeam = " + findTeam.getName());
            ...

https://github.com/oss0202/ex1-hello-jpa/blob/master/src/main/java/relationmappingbasic/JpaMainrRelationOneWay.java

 

oss0202/ex1-hello-jpa

JPA Hello World. Contribute to oss0202/ex1-hello-jpa development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 

 

책 추천

http://www.yes24.com/Product/Goods/18249021

 

객체지향의 사실과 오해 - YES24

『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장

www.yes24.com

http://www.yes24.com/Product/Goods/74219491

 

오브젝트 - YES24

역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를

www.yes24.com

 

 

 

 

 

 

 

출처

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔

www.inflearn.com