일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- MySQL
- grafana
- cassandra
- Selenium
- RabbitMQ
- coalesce
- docker compose mysql
- netflix oss
- WebLogic
- docker
- docker-compose
- mybatis
- argo cd
- spring boot
- jmeter
- KAFKA
- QueryDSL
- Airflow
- redis
- Hibernate
- Redis Sentinel
- spring cloud
- Docker Compose
- ChannelPipeline
- Netty
- spring boot redis
- Spring Open Feign
- vue.js
- JPA
- weblogic 10
- Today
- Total
목록Spring (98)
IT.FARMER
2020/05/26 - [Spring/Spring Batch] - Spring Batch 특징 2020/05/26 - [Spring/Spring Batch] - Spring batch 기본 흐름 (tasklet, next flow) 2020/05/26 - [Spring/Spring Batch] - Spring Batch 분기/decide 2020/05/26 - [Spring/Spring Batch] - Spring Batch JobParameter 2020/05/26 - [Spring/Spring Batch] - Spring Batch chunk 지향 방식 Spring Batch 특징 대용량 처리 / 복잡한 처리를 위한 프로젝트 (로그 처리, 정산작업등) 특정시간에 자동으로 실행되거나 특정 요청으로 실행..
DTO(Entity)를 처음 인자로 넣어 주고 Object와 mapping 되는 columl의 인자 값을 셋팅 한다. create a Bean populating projection for the given type and expressions Example UserDTO dto = query.select( Projections.bean(UserDTO.class, user.firstName, user.lastName)); @Embeddable / @EmbeddedId 로 멀티PK가 잡힌 경우엔 Projection.bean 사용시, alias 기능을 이용하여 Mapping 시켜 준다. QAdGroupEntity qAdGroupEntity = QAdGroupEntity.adGroupEntity; List a..
데이터를 한번에 여러 데이터를 저장할때 , bulk save로 검색하면 여러 샘플이 나오는데 10만건(특정)의 데이터를 50(특정)건수 만큼씩 끊어서 Transaction을 적용하고 저장하고 싶을때 참고하면 좋을거 같다. Spring 에서 Transaction을 사용하기 위해서는 몇가지 주의할점이 있다. 1. class 나 inferface 에선언하여 사용한다. 2. 자기 참조는 불가능 하다. (클레스를 분리하여 외부 호출로 사용 ) - AOP proxy 방식때문이다. 3. private method 에서는 동작되지 않음 자기 참조로 호출이 불가능 하기때문에 약간의 꼼수라고 해야 할까요 ? 내부 무명 클레스를 이요하거나, DL 방식으로 Class를 불러와서 사용하면 가능 하다. 예제는 DL 방식으로 불러..
Hibernate 특징 Hibernate는 새로이 삽입 된 모든 Customer인스턴스를 세션 레벨1 cache에 캐시 하므로 트랜잭션이 끝나면 100000 개의 엔티티가 영속 컨텍스트에 의해 관리됩니다. JVM에 할당 된 최대 메모리가 다소 적 으면이 예제는에서 실패 할 수 OutOfMemoryException있습니다. Java 1.8 JVM은 사용 가능한 RAM의 1/4 또는 1Gb를 할당하여 힙에 100,000 개의 객체를 쉽게 수용 할 수 있습니다. 장기 실행 트랜잭션은 연결 풀을 고갈시켜 다른 트랜잭션이 처리 할 기회를 얻을 수 없습니다. JDBC 일괄 처리는 기본적으로 활성화되어 있지 않으므로 모든 삽입 문에는 데이터베이스 왕복이 필요합니다. JDBC 배치를 사용하려면 hibernate.jdb..
Hibernate 사용시 주의점 Hibernate: No default constructor for entity Inner Classhttps://stackoverflow.com/questions/28053135/hibernate-no-default-constructor-for-entity-inner-class 내부 클래스 이용시 하이버네이트 내부에서 프록시(리플레케이션)으로 기본 생성자를 콜 한다. 이때 내부 클레스를 사용 하게 되면 실제로 내부클레스는 디폴트 생성자가 없기때문에 에러가 나가 된다. 이에 문제를 해결하기 위해서는 정적 내부 클레스를 이용한다. 해결 방안 : 정적 내부클레스 이용 @Embeddablepublic class ClassName { @EmbeddeId public static ..
스프링부트 개발자툴 활용하기, 개발시 resource 성격의 파일을 리로드할때, 혹은 변경된 클레스만 핫스와핑 하여 사용시 spring devtools 모듈을 설정 하여 사용한다. spring.devtools.restart.enabled 설정으로 restart 제어 . 재시작 비활성화 (false 시) .application.preperties - 클레스 로더 초기화 하여 핫스와핑은 되지만 파일 감지는 없음 (제한적) .java main method에 System preperties - 재시작 지원을 완벽히 비활성화 할때, 예를 들면 특정 라이브러리에서만 비활성화시. Debug Mode 로 실행해야 동작 한다. (spring boot version 2.0.3.RELEASE) maven org.spring..
Springboot jpa & Hibernate Naming Strategy 전략 어느날 부터인가 컬럼명이 카멜케이스로 나오고 있다. 왜이러지? Springboot 특정 버전 이상부터 프로퍼티 설정이 변경되었다. 프로젝트에 대소문자 구별이 있으면 추후에도 문제가 생길 여지가 있어 모두 소문자로 사용하기 위한 전략을 택했다. ImprovedNamingStrategy 이용시 카멜 케이스를 언더스코어 버전으로 변경해준다. Spring Boot 디폴트는 org.springframework.boot.orm.jpa.SpringNamingStrategy이다. SpringNamingStrategy는 ImprovedNamingStrategy 을 상속한 클레스이다. Hibernate 4 spring.jpa.hibernat..
@OneToOne 양방향 매핑 주키(PK)공유 두테이블에서 같은 키를 PK로 이용한다. A -> PK -> B -> FK,PK *부모객체메인객체 @OneToOne 선언영속상태 정의부모객체에 양방향 매핑의 mappedBy를 설정하여 외례키 컬럼이 생성되지 않도록 한다. @Entity@JsonIgnoreProperties(ignoreUnknown = true)public class Users implements Serializable { @Id private String email; @OneToOne(mappedBy = "users" , cascade = { CascadeType.PERSIST ,CascadeType.MERGE , CascadeType.REMOVE // 사용자 삭제시 FCM Key 함께 삭제..
ORM Jpa @ResponseBody 재귀 memory error ORM을 이용하다보면 @ResponseBody 에서 자동으로 마샬링 언마샬링시에 무한 재귀에 빠지게 된다. 이때 부모자식과 같은 관계를 갖는 객체는 원하는 형태에 따라 다음과 같은 @Annotation을 붙여 주어야 한다. @JsonBackReference 는 순환참조의 역할을 끝어주게 되며, 해당 객체가 마샬릴될때 대상에서 제외 된다. 즉 양방향의 JSON 마샬링을 할 수 없는 단점 존재한다. 양방양이 가능한 @JsonIdentityInfo(http://springquay.blogspot.kr/2016/01/new-approach-to-solve-json-recursive.html) 있지만 같은 객체에대한 마샬링은 해주지 않고 참조만 ..