본문 바로가기
  • A little happiness

Spring34

섹션 6. 연관관계 매핑 기초 rdb 설계시 연관관계 - pk, fk 의 키 값만 가지게 되는 설계에서 객체를 다루기 위해서 rdb를 jpa에서 사용할시 객체기준으로 다룰 수 있도록 하는 방법이 중요. -> pk, fk에 키 컬럼을 가지는게 아니고 해당 객체 자체를 가질 수 있어야함 따라서 해당 객체에@ManyToOne@JoinColumn(PK_NAME)어노테이션을 통해서 구현할 수 있다. - 단방향 연관관계 - 양방향 연관관계와 연관관계의 주인객체 연관관계 -> 각 객체간의 단방향 연관관계가 2개 존재양방향 연관관계의 주인은 mappedBy로 표시, 왜래 키가 있는 곳을 주인으로 정하기 -> 읽기만 가능하게 됨1:N 일 경우 N이 되는 객체 쪽이 무조건 연관관계의 주인이 되어야 한다. - 양방향 매핑시 주의점, 정리양방향 관계 매핑.. 2025. 9. 26.
섹션5. 엔티티 매핑 데이터베이스 스키마 자동 생성DDL을 어플리케이션 실행 시점에 자동 생성테이블 중심 -> 객체 중심옵션 :create, 디비 삭제후 전부 새로 생성create-drop,update, 변경분만 반영validate, none 개발 초기 create, update테스트 서버는 update, validate스테이징, 운영 서버 validate, none 필드와 컬럼 매핑@Column 컬럼 매핑name 이름insertable, updateable 등록, 변경 가능여부nullable null 값의 허용여부, false로 설정하면 not null 제약조건 생성unique 유니크 제약조건columnDefinition 컬럼 정보를 직접 줄 수 있다.* Enum타입 설정시 Ordinary 설정하지 않기. 무조건 Str.. 2025. 9. 19.
영속성 관리 - 내부 동작 방식 영속성 컨텍스트란? 트랜잭션이 종료되기 전까지 1차 캐시 영속 컨텍스트(entityManager)에 저장된 데이터를 담아두는 공간.이는 트랜잭션이 종료되는 commit 시점에 실제 디비에 반영되고, 이전까지는 영속 컨텍스트 안에서 관리된다. 1차 캐시로 REPEATABLE READ 등급의 트랜잭션 격리수준을 어플리케이션 레벨에서 제공 트랜잭션을 지원하는 쓰기 지연 = commit시에만 insert들이 영속성 컨텍스트에 올라 온 사항들이 한 번에 반영되기에 쓰기지연이 가능하게 된다. 변경감지(Dirty Checking) : 영속성 컨텍스트에 있는 데이터에 변경이 일어날 경우에 1차 캐시(Entity)와 스냅샷을 비교하게 된다.이렇게 두 데이터를 비교하고 업데이트를 날리게 된다. 이후 commit시 flus.. 2025. 9. 19.
섹션14. 스프링 AOP - 실무 주의사항 - 내부호출 주의사항 this.method() 호출을 할 경우 프록시를 통해 호출되지 않는다. 자기 자신을 의존성 주입한 다음 본인.method()통해서 프록시를 통하여 외부메소드를 호출하도록 한다. 2025. 8. 20.
섹션 12. 스프링 AOP - 포인트컷 AspectJ는 포인트컷을 편리하게 표현하기 위해 특별한 표현식을 제공한다이때 사용되는 포인트컷 지시자 종류는 다음과 같다.executionwithinargsthistarget@target@within@annotation@argsbean execution 이 가장 중심적으로 사용된다. 따라서 해당 포인트컷을 중심으로 이해하는 것이 중요하다. 2025. 8. 19.
섹션 10. 스프링 AOP개념 aop의 필요성 -> 핵심기능과 부가기능의 분리 필요부가기능과 부가기능을 어디에 적용할지 선택하는 기능-> @AspectAOP는 OOP의 부족한 부분(횡당 관심사의 처리)를 위해 개발된 기능. AspectJ 스프링도 AOP를 지원하지만 대부분 AspectJ 문법을 차용하고, AspectJ가 제공하는 기능의 일부만 제공한다. AOP적용방식- 컴파일 시점- 클래스 로딩 시점- 런타임 시점 - 컴파일 타임 (위빙)컴파일 .class 를 만들때 AspectJ를 사용하여 코드 자체를 반영하여 AOP를 적용하게 된다. - 클래스 로딩시점 (위빙)JVM 클래스 로더에 올리기 전에 .class파일을 조작하여 JVM에 올려준다.(AspectJ 직접사용) 참고로 많은 모니터링 툴들이 이 방식을 사용한다. * 위빙은 특별.. 2025. 8. 18.