본문 바로가기

Spring Framework/JPA3

@GeneratedValue 기본키 전략 4가지 DB에 따라 기본키 생성 전략의 디폴트 값이 달라지기 때문에 MySQL을 기준으로 구현한면, 원하는 전략을 명시적으로 코드로 남겨두시길 추천한다. 결론 : AUTO 전략이 DB마다 다르게 채택되고, Mysql에서는 sequence가 따로 없기 때문에 table 전략이 결국 사용됨을 알았습니다. 조사하면서 table 전략은 사용 이유가 확실할 때만 사용하는 것이 좋을 것 같다고 생각했는데요. 지금의 경우 PK가 숫자로만 구성된다면 굳이 table로 PK가 관리되지 않아도 될 거라 판단합니다. @GeneratedValue 로 기본키 전략 4가지 1. IDENTITY 전략 사용법 : @GeneratedValue(strategy = GenerationType.IDENTITY) DB의 AUTO_INCREMENT를.. 2022. 6. 5.
@Embeddable 사용 이유와 장점 @Embeddable 사용한 이유와 장점 관련성이 있는 값들을 의미 있는 객체로 묶어서 관리하면서 객체의 응집도가 높아지는 효과를 기대하고 사용. 공유할 수 있는 객체 이면서 변경할 수 없도록(불변) 사용가능한 것이 @Embedded 타입의 장점이라고 생각합니다. import javax.persistence.Embeddable; @Embeddable public class Address { private String country; private String city; private String gu; } 2022. 6. 4.
JPA 엔티티 양방향 참조에 대한 생각 JPA 엔티티 양방향 참조에 대한 생각 양방향 참조에 대한 질문 양방향 참조를 걸어주신 이유가 있을까요? 양방향 참조를 걸어줄 필요가 없다면, 단방향 참조를 활용하시는 것이 좋습니다. 왜 그럴까요? 단방향 참조 외에 양방향 참조를 굳이 써야 할 경우가 있다면, 언제일까요? 엔티티 참조에 대한 내 생각 먼저 양방향 참조로 엔티티를 모두 작성하고 개발하였다. 이유는 모든 연관관계를 양방향으로 우선 두고, 기능을 개발하면서 하나씩 고민해나가는 방향으로 잡아가기로 했었기 때문이다. 일단 DB 기반으로 관계가 있을수 있다는 것을 표시하고 개발해 나가면서 해당 관계의 필요유무를 고민해 나가려고 했던 것이었다. 그러면서 참고자료의 내용을 읽어보면서 단방향 참조를 활용하는 것이 좋은 이유를 생각해보면, 올바르게 모델링.. 2022. 6. 4.