대량 삽입 (Bulk Insert)와 JPA의 한계JPA는 객체 지향적 데이터 처리를 위해 설계되었기 때문에, 대량 삽입(Bulk Insert)와 같은 작업에 최적화되어 있지 않음Bulk Insert 란?아래와 같이 여러 insert 문을 하나의 쿼리에서 날릴 수 있는 방법INSERT INTO 테이블 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...), (값11, 값22, ...),하지만 JPA는 영속성 컨텍스트를 통해 데이터를 관리하므로, 이러한 형태의 Bulk Insert를 지원하지 않음JPA의 Save vs SaveAll 성능 비교save: 하나의 엔티티를 저장할 때마다 별도의 쿼리를 실행saveAll: 여러 엔티티를 한 번에 저장하도록 최적화되어 있지만, 여전히 엔티티별로 개별..
Spring
스프링부트 기준application.yml 파일 하나를 두고 운영, 개발, 로컬 환경에서 실행하는 방법 yml 파일 설정방법yml 파일을 열고 --- 전에는 공통으로 사용할 설정을 넣어주고그 아래에는 포트 db url 등 달라지는 값들을 넣어준다 그리고 최초 --- 전에 profiles active 에 기본적으로 (옵션 안넣으면) 실행될 이름을 지정해줌아래의 각 설정들에 spring - config - activate - on - profiles 에 원하는 이름을 지정해준다. 예시spring: profiles: active: local application: name: keart_project datasource: hikari: ..
스프링 파일다운로드- ResponseEntity 방식으로 다운로드 구현중- No converter for [class org.springframework.core.io.FileSystemResource] with preset Content-Type 'application/octet-stream' 오류발생 try (ZipOutputStream zos = new ZipOutputStream(Files.newOutputStream(tempZipFile, StandardOpenOption.CREATE))) { Files.walk(tempDir) .filter(Files::isRegularFile) .forEach(file -> { try {..
전자정부에서 context-transactional.xml 파일이 있어이를 통해 transaction 설정했으나 @Transactional 안붙여도 어떤 메소드든Exception 만 발생하면 트랜잭션이 발생하는 문제 발생특정 메소드에서는 예외처리 발생시 DB 에 오류 발생 여부를 업데이트 해야하는 상황이었음이거 해결한 방법 정리1. 전자정부 트랜잭션 기본설정 (모든 예외에 대해)기본적으로 생성되는 아래 파일에 expression 경로만 본인 프로젝트로 바꿔주고 이름 맞춰주면 끝 2. 특정 메소드에 대해서만 예외처리 트랜잭션 해제하기and !execution 으로 원하는 메..
상황 및 원인@RestController / @ResponseBody 붙였는데요청에 대한 응답이 모두 404 뜨고 json 값이 넘어가지 않아서 찾아봄스프링 4 이상부터는 따라서 자동으로 JacksonHttpMessageConverter, Jackson2HttpMessageConverter, GsonHttpMessageConverter를 설정해주지만그 이하버전의 경우 별도로 설정을 해줘야 사용이 가능해결방법 위와 같은 dispatcher-servlet.xml 파일에서 property 에 아래 내용 추가하면 댐 text/html;c..
__ Postgresql Timestamp Entity 설정법__ JPA 테이블 생성시간, 수정시간 자동생성 하는 법__ Postgresql Timestamp 형식 Entity 설정하는 법아래랑 다른 형식 쓰면 bytea 로 들어가고 난리임@Column(nullable = false, updatable = false)private LocalDateTime createTime;@Temporal(TemporalType.TIMESTAMP)private Date loginTimestamp;private Timestamp logTimestamp; // 매핑될 필드Postgresql 의 DEFAULT CURRENT_TIMESTAMP 설정 주는 법아래처럼 설정하면 DDL 에 DEFAULT CURRENT TIMESTA..