
🤔 연관관계 이해하기 객체 vs 테이블 🚀 테이블의 연관관계 표현 외래키를 사용하여 다른 테이블 과의 pk로 연관 관계를 표현 1:1 과 1:N 의 관계만 표현이 가능 N:N 은 2차원으로 쉽게 매핑이 불가능 🚀 객체의 연관관계 표현 다른 객체간의 관계가 있다면 참조로 연관 관계를 표현 방향성을 표현 가능 예를 들자면 한쪽 객체에서만 참조를 표현 할 수 있다. 1:1 과 1:N 말고도 N:N 관계가 표현 가능 🤔 객체와 테이블의 차이에서 오는 애매모호함 주목해야 할 점은 JPA 는 Table을 객체화 시키는 것 + java에서 손쉬운 db사용을 제공 테이블은 다른 테이블의 정보를 가져올 때 pk와 fk로 join을 한다. 즉, sql을 통해 정보를 가져와도 fk 값만 가져온다는 의미이다 하지만 이런식으로..
🛠 엔티티 매핑 JPA 에서의 중요한 점 동작 방식 데이터 베이스와 객체를 어떻게 연관지을 것인가? (mapping 할 것인가?) 결국 JPA 에서 지원하는 Annotation들을 잘 알고 잘 사용해야 안전하게 매핑이 가능하다 🚀 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하고 엔티티라고 부른다. JPA를 사용하여 테이블과 매핑할 클래스는 @Entity가 필수다. ❌ 조건 기본 생성자가 필수(public 또는 protected) final 클래스, enum, interface, inner 클래스 사용 불가 저장할 필드에 final 사용 불가 🖥 @Entity 의 코드 @Documented @Target({ElementType.TYPE}) @Retention(Retenti..

🤔 JPA 의 핵심 영속성 컨텍스트 JPA 의 핵심 2가지 JAVA 의 객체와 관계형 데이터베이스 와의 Mapping 을 HOW? 영속성 컨텍스트 (1차 캐시) 항상 날 괴롭게 한다.. 영속성 컨텍스트 (persistence Context) ❌ 영속성 컨텍스트 != 데이터 베이스 (임시 저장소라고 생각하자) 논리적인 개념 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티 매니저당 하나의 영속성 컨텍스트를 가진다 J2EE 환경에서는 영속성 컨텍스트가 하나의 엔티티 매니저로 관리되는 것은 아니다 같은 트랜잭션 안에서는 사용하는 EntityManger끼리 같은 영속성 컨텍스트를 공유 영속성 대상 (Entity) 의 상태 비영속 상태 영속 상태 준영속 상태 삭제 ❗ 중요한 점은 영속 상태이다. 마치 data..
🔨 jpa 시작 JPA 설정파일 persistence unit : 주로 데이터 베이스 하나당 하나로 만든다. unit 이름으로 구분하게 된다. properties : 필수 속성, 옵션 속성들 기입 Connection 정보 기입 (driver, user, password, url) dialect 데이터 베이스 방언 기입 각각의 데이터 베이스 마다 제공하는 SQL 문법과 함수가 조금씩 다르기 때문 options 로그 찍어주기, table 생성 방식, 등등 ✅ 스프링에서는 persistence.xml 보다는 주로 yml로 관리 된다. 🛠 그래서 어떻게 사용해? 설정한 persistence unit name 으로 Entity Manager Factory를 생성 EntityMangerFactory에서 entity..
완전 쌩 초보일 때부터 지금 까지 (지금도 초보이기는 하나) 스프링을 공부하면서 앱의 구조에 대해 정말 고민을 많이 했었다. 오늘 프로젝트를 완전히 갈아 엎을 일이 생겼는데, (완전 초짜일 때 해보던 프로젝트) 그때 당시에도 Controller와 Service 계층을 어떤 것에 의존해야 할지 고민을 정말 많이 했었다. 당시에는 팀 회의를 통해서 페이지 별로 짜는 것이 옳지 않겠느냐로 결론이 났었는데, 페이지 별로 api를 설계하였더니 각기 다른 페이지에서 비슷한 역할을 하는 api를 통합하지 못하는 기이한 현상이 일어나는 것을 보고 도메인 설계를 하는 것이 더 좋지 않았을까 하는 결론이 나게 되었다. 물론 지금도 이것이 확신이 드는 상황은 아니지만 어느 정도 이게 맞다는 느낌이 들기는 한다. 아무튼 오늘..
- Total
- Today
- Yesterday