less than 1 minute read

JPA 응용

static 폴더와 template 폴더의 차이점

static 은 ‘정적 페이지’

  • 서버에서 별도의 처리없이 반환되는 파일 ex) 이미지, CSS,Javascript, HTML

template는 ‘동적 컨텐츠’

  • 템플릿 엔진에서 사용되는 HTML 파일을 저장
  • ‘서버 사이드 렌더링’ ( → 서버에서 별도로 처리하여 클라이언트에게 제공 ) 하여 최종 HTML 제공
  • Model model 사용이유도 서버사이드 렌더링을 하기 위함

스프링부트 tymeleaf vieName 매핑

  • resources:templates/+{ViewName}+.html

서버에서 HTML을 렌더링 하기때문에 변경된 내용이 바로 적용되지 않을 수 있다.

그렇기 때문에 View페이지를 변경하려면 해당 페이지가 포함된 프로젝트를 다시 빌드하고 서버를 재 실행해야한다.

implementation group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '3.0.6'

ㄷ다음과 같이 dev-tools 사용시 서버 재시작없이 view 파일 변경가능하다.

스크린샷 2023-05-07 오후 3.14.58.png

스크린샷 2023-05-07 오후 3.15.03.png

application.properties 또는 application.yml 파일 둘중 하나 선택해서 사용가능

엔티티 설계시 주의점

Getter만 열려있고, Setter는 닫자

@XToOne(OneToOne,ManyToOne) 관계는 기본이 ‘즉시로딩’ (EAGER) 이므로 ‘지연로딩’ 수정필요

연관 관계 편의 메서드

(사진)

사진과 같이 Member와 Order간의 관계는 다대일 관계이면서 ‘양방향 관계’이다.

양방향 관계에서 양방향으로 객체를 설정해줘야하기떄문에 연관 관계 편의 메서드를 적용해야한다.

// 편의 메서드 적용안했을때
public static void main(String[] args) {
    Member member1=new Member();
    Order order=new Order();

    member1.getOrders().add(order);
    order.setMember(member1);
}

다음과 같을때 연관관계를 설정해줘야한다

// 적용했을 때
public void setMember(Member member){
    this.member=member;
    member.getOrders().add(this);
}

Q. 트랜잭셔널과 영속성 컨텍스트의 비교

@Transactional

@Transactional은 영속성 컨텍스트를 생성하고 그안에서 데이터를 처리한다.

Updated: