[JPA] Batch Insert
·
Spring Framework/JPA
Spring Boot, Spring Data JPA, PostgreSQL 환경에서 대량 데이터를 삽입할 때 사용할 수 있는 여러 방법의 성능을 비교개별 엔티티 저장(Repository.save())엔티티 컬렉션 저장(Repository.saveAll())JDBC 템플릿을 활용한 배치 삽입 (batchInsert())PostgreSQL JDBC 드라이버의 reWriteBatchedInserts 옵션과 배치 크기의 영향엔티티와 데이터를 저장하는 메서드는 다음과 같다. ID 생성 전략을 IDENTITY로 설정하면 batch 옵션이 동작하지 않으므로 주의해야 한다.@Entity@SequenceGenerator( name = "issued_coupon_code_gen", sequenceN..
[JPA] orphanRemoval, CasecaseType.REMOVE
·
Spring Framework/JPA
orphanRemoval과 casecade는 @OneToMany에서 삭제 동작을 제어하는 두 가지 옵션이다. orphanRemoval=true, CascadeType.REMOVE 두 옵션 모두 부모-자식 관계에서 자식 엔티티를 삭제하는 설정이지만 차이가 있다.casecadecasecade는 부모 엔티티의 상태 변화가 자식 엔티티에 전파되도록 설정하는 옵션으로 부모 엔티티가 생성/수정/삭제 될 때 자식 엔티티에도 부모 엔티티를 따라 데이터베이스에 생성/수정/삭제되록 설정한다. 이 옵션에 지정할 수 있는 다양한 CascadeType이 있다.PERSIST: 비영속 상태의 부모 엔티티를 영속상태로 변경할 때 자식 엔티티도 영속 상태로 변경MERGE: 준영속 상태의 부모 엔티티를 영속상태로 변경할 때 자식 엔티티..
[JPA] 연관 관계
·
Spring Framework/Spring
JPA를 사용하면서 두 엔티티간 일다대 관계를 설정하는 경우가 많았다. 어쩔때는 중간 테이블이 생기고 어쩔때는 데이터베이스에 데이터가 저장이 안되고, 그럴때마다 그냥 mappedBy 추가하고 joinColumn 추가하고 넘어갔다. 특히 두 엔티티 관계를 설정할 때 연관관계의 주인이라는 개념을 잘 이해하지 못했다. 아직 제대로 개념을 익히지는 못했지만 두 엔티티 관계 설정을 해보며 어떤 변화가 생기는지 테스트해봤다.기본 코드아래의 Parent, Child 두 엔티티에 일대다 관계를 설정할 것이다. 각 엔티티에 @ManyToOne이나 @OneToMany를 추가해보며 테스트 코드를 실행했다.@Entitypublic class Parent { @Id @GeneratedValue(strategy = G..
JSP 개발 설정
·
Spring Framework
[JSP]개발 환경 설정톰캣을 설치한 뒤 이클립스 설정을 해야한다.첫 프로젝트 생성File - new - project 클릭 Dynamic Web Project 선택 ※Dynamic Web Project가 없다면 ... Eclipse EE를 설치한다.프로젝트 이름을 적은 뒤 target runtime 지정하기 위해 New Runtime 클릭설치한 톰캣 버전 선택설치한 톰캣 경로 지정 후 Finish 클릭Project Explorer에 프로젝트가 생성된 것을 볼 수 있다.서블릿 생성프로젝트 우클릭 -> New -> Sevlet패키지 이름과 클래스 이름 작성next를 누르면 지정되는 URL path를 확인할 수 있다.next를 누르면 여러 메서드를 지정할 수 있다. 예제를 위해 toGet만 체크해준다. 설정..
톰캣 설치
·
Spring Framework
[JSP]톰캣설치[JSP]톰캣설치http://tomcat.apache.org/접속 후 좌측의 Download에서 버전 선택 후 zip파일 다운로드압축을 해제하고 bin안의 startup 실행(윈도우는 bat, 리눅스는 sh)실행 후 localhost:8080 접속하면 다음과 같은 페이지가 나온다.startup이 실행 안될 때JDK가 설치되지 않아서 실행이 안됐다. JDK 설치 후 JAVA_HOME까지 환경변수에 추가해야 올바르게 실행된다.환경변수 추가 방법
Interceptor
·
Spring Framework/Spring
Interceptorinterceptor를 통해 뷰의 공통적인 부분을 묶을 수 있다. 이를 통해 사용자 세션, 쿠키를 확인하거나 로그를 남기는 등 여러 작업을 할 수 있다.interface CookieValidator { void checkUser(email);}컨트롤러에서 이 인터페이스를 상속받아 사용하면 된다.인터셉터 작성​xpublic class AuthorizationInterceptor extends HandlerInterceptorAdapter {​ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {​ String em..