개발하면서 StackOverflow나 여러 커뮤니티에 질문할 때 DB 테이블 구조를 같이 올려야 하는 경우가 많다. 텍스트로 표를 만들기가 번거로운데, 마크다운 형식 테이블을 쉽게 만들어 주는 웹사이트를 찾아서 소개한다.
www.tablesgenerator.com/markdown_tables
이 사이트에선 CSV 파일을 업로드하거나 직접 데이터를 입력해서 마크다운 테이블을 바로 만들 수 있다.
덕분에 질문 글을 훨씬 깔끔하게 작성할 수 있어 유용했음!
Markdown Tables generator - TablesGenerator.com
You can import table data by uploading file in CSV format (Comma Separated Value). Most spreadsheet software, both desktop and online, allows to save tabular data in CSV format — it is usually available in the File menu under the name "Save As..." or "Ex
www.tablesgenerator.com
JPA에서 테이블 관계 매핑의 중요성
JPA를 사용해 개발할 때 테이블 간 관계 설정이 매우 중요하다. 관계를 잘못 설정하면 데이터 조회가 꼬이거나 무한 루프가 발생하기도 때문이다.
기본적인 JPA 관계 어노테이션은 다음과 같다:
@OneToOne
: 일대일 (1:1) 관계@OneToMany
: 일대다 (1:N) 관계@ManyToOne
: 다대일 (N:1) 관계
예를 들어, A 테이블이 여러 개의 데이터를 B 테이블과 연결하는 구조라면, A는 @ManyToOne
, B는 @OneToMany
관계를 사용한다.
간단한 예제 코드
다음은 JPA로 A테이블과 B테이블 관계를 매핑한 예제다.
// B 테이블 엔티티 (부모) @Entity public class BTestVo { @Id private Long id; @JsonManagedReference @OneToMany(mappedBy = "bVo") private List aTestVoList = new ArrayList<>(); // getters, setters }
// A 테이블 엔티티 (자식) @Entity public class ATestVo { @Id private Long id; @JsonBackReference @ManyToOne @JoinColumn(name = "b_id", insertable = false, updatable = false) private BTestVo bVo; // getters, setters }
위에서 @JsonManagedReference
와 @JsonBackReference
는 무한 루프 방지를 위한 Jackson 어노테이션이다.
이걸 안 넣으면 JSON 직렬화 시 서로를 계속 참조하면서 에러가 나기 쉽다.
마치며
이번에 JPA를 활용해 보면서 관계 매핑의 중요성을 크게 느꼈다. 그리고 질문할 때 테이블 구조를 깔끔하게 정리하는 것도 생각보다 큰 도움이 됐다. 앞으로도 이런 부분들을 신경 써서 개발과 소통에 도움을 얻어야겠다는 생각이 들었다.
'DB > JPA' 카테고리의 다른 글
JPA 양방향 연관관계에서 StackOverflowError 발생한 이유와 해결 (0) | 2021.07.18 |
---|---|
JPA - DB 테이블 자동 생성과 양방향 연관관계 설정 (0) | 2021.02.17 |
JPA 양방향 매핑 시 발생한 무한 순환 참조 에러 (0) | 2020.10.12 |
JPA에서 단일 데이터 조회하기 (0) | 2020.10.07 |
JPA에서 @Transient 사용하기 (0) | 2020.09.26 |