고려할건 크게 3가지다.
- 다중성
- 단방향, 양방향
- 연관관계의 주인
다중성 : 두 엔티티의 연관관계를 나타냄 (예: 일대다,다대일,일대일,다대다) 다중성을 판단하기 힘들땐 반대방향을 생각하면 됨 (일대다의 반대는 다대일)
- 다대일(@ManyToOne)
- 일대다(@OneToMany)
- 일대일(@OneToOne)
다대다(@ManyToMany)
고려할건 크게 3가지다.
다중성 : 두 엔티티의 연관관계를 나타냄 (예: 일대다,다대일,일대일,다대다) 다중성을 판단하기 힘들땐 반대방향을 생각하면 됨 (일대다의 반대는 다대일)
다대다(@ManyToMany)
@Entity(클래스) : 테이블과 매핑할 클래스, JPA가 관리함
@Table(클래스) : 엔티티와 매핑할 테이블 (생략시 엔티티명으로 적용)
@Column(필드) : 칼럼을 매핑한다.
트랜잭션 커밋 하는 순간 DB 반영힘 이를 플러시(flush)라 함
하이버네이트 오픈소스 ORM 프레임워크가 나온 후 자바빈이 버려지고 하이버네이트, 이클립스링크등의 ORM 프레임워크로 자바 ORM 표준을 정한것이 JPA 이다.
JPA(Java Persistent API) : 관계형 데이터베이스에 접근하기 위한 표준 ORM 기술을 제공하며, 기존에 EJB에서 제공되던 엔터티 빈(Entity Bean)을 대체하는 기술이다. JPA는 JSR 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만, JPA는 EJB 컨테이너에 의존하지 않으며 EJB, 웹 모듈 및 Java SE 클라이언트에서 모두 사용이 가능하다. 또한, JPA는 사용자가 원하는 퍼시스턴스 프로바이더 구현체를 선택해서 사용할 수 있다.
ORM(Object Relational Mapping) : 관계형 데이터베이스를 객체에 매핑.
왜 JPA를 사용해야 하는가?
최근에 스프링 부트 그래들 프로젝트를 생성시에 jre 2개가 잡히는 문제가 발생하였습니다.
그래서 jdk를 지웠다 다시 설치 해보기도 하였으며 결국 sts를 지우고 다시 깔았지만 동일한 현상이 지속되었습니다.
그러던중 .classpath에 들어가서 확인해보니 자바 라이브러리를 불러오는 부분에서
2015년 11월 28일 KSUG(한국 스프링 사용자 모임) 에서 주최 하는 세미나를 다녀 왔습니다.
http://www.ksug.org/seminar/20151128/
세미나의 전체적인 내용은 부제목에 나와 있듯이 도메인 모델(객체지향)과 객체 설계를 통해 애플리케이션을 작성 하면 어떠한 장점이 있는지 결국 이 장점들이 Spring Framework에 다 스며 들어 있어서 결국 Spring Framework를 쓰면 될것 처럼 보였습니다.
첫번째 시간 SK planet 박성철님께서 애플리케이션 아키텍처 안티 패턴이라는 주제로 세미나를 진행해 주셨습니다.
http://www.slideshare.net/gyumee/ss-55616001
우리 업계에서 인식하지 못하는 사이에 학습되어 반복되는 애플리케이션 아키텍처 안티 패턴을 규명하고 이것들이 우리에게 어떤 고통을 주는지, 왜 이런 패턴을 우리 코드에 스며들어 사라지지 않는지 이야기해 봅니다.
안티패턴 총 6가지로 구성되어 있으며 짧게 다루겠습니다.