티스토리 뷰

Spring Data Jpa @ManyToOne 양방향 Mapping하기

 

Spring Data Jpa는 굉장히 괜찮은 프레임웍이다. 기능이 많고 유연한데 그만큼 제약이 많고 잘 알고 써야 한다.

가장 어려운것은 Mapping이다.

 

소스코드는 여기

https://github.com/Kyeongrok/baseball_mapping

 

목차는 다음과 같다.1.Project빌드

2.필요한 라이브러리 선택

- JPA, MySql, JDBC, H2

3.application-test.yml 만들기

5.Team 엔티티(Entity) 만들기

6.Lombok 설정

7.TeamRepository 만들기

8.TeamRepository test code 만들기

 

좌측 Spring Initializer를 선택한다.

Next누른다.

 

프로젝트 이름 등을 정한다.

Type을 Gradle Project로 바꿔준다. 시나리오가 야구 경기중 특정 팀의 이닝별 점수를 ManyToOne 양방향 매핑을 할 것이기 때문에 artifact, name을 baseball로 했다.

 

필요한 라이브러리를 선택한다.

일단 이번 포스트의 주인공인 JPA를 선택하고 DB는 H2로 할 것이다. MySql은 나중에 연결하고 싶을 수도 있어서 import한다. JDBC는 예의상 import한다.

 

 

테스트 설정 파일 넣기

test/resources 를 만들고 아래 파일을 만든다.

application-test.yml

spring:
  jpa:
    database: H2
    generate-ddl: true
    show-sql: true
    hibernate:

      ddl-auto: create

 

Team 엔티티(Entity) 만들기

com.entites에 Team 클래스를 만든다.

일단 되는지만 보기 위해서 최소한의 id와 name field만 넣는다.

@Entity, @Data annotation을 붙혀준다.

 

롬복(Lombok)설정 하기

ctrl + alt + s 를 눌러서 설정을 연 후에 annotation으로 검색해서 위와 같이 Enable annotation processing에 체크 한다.

 

TeamRepository만들기

 

TeamRepository test code 만들기

Test Code를 만든다.

 

TeamRepositoryTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RunWith(SpringRunner.class)
@DataJpaTest
@ActiveProfiles("test")
public class TeamRepositoryTest {
 
    @Autowired
    private TeamRepository teamRepository;
 
    @Test
    public void saveAndSelect() throws Exception {
        Team team = new Team();
        team.setId(1);
        team.setName("한화");
        teamRepository.save(team);
 
        Team selectedTeam = teamRepository.findOne(1l);
        assertEquals(1l, selectedTeam.getId());
        assertEquals("한화", selectedTeam.getName());
 
 
    }
}
cs

 

 

Test 실행하기

이렇게 파란불이 들어오면 잘 만들었고 잘 실행 된 것이다.

 

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함