일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker-compose
- RabbitMQ
- Redis Sentinel
- jmeter
- docker compose mysql
- MySQL
- coalesce
- redis
- Hibernate
- mybatis
- vue.js
- Airflow
- WebLogic
- spring boot
- cassandra
- spring boot redis
- Spring Open Feign
- Docker Compose
- docker
- Netty
- spring cloud
- KAFKA
- weblogic 10
- Selenium
- JPA
- netflix oss
- argo cd
- QueryDSL
- ChannelPipeline
- grafana
- Today
- Total
목록Spring/Spring Data JPA (26)
IT.FARMER
mybatis association, inner class , embeded innerclass를 이요해서 mybatis 의 Obejct 맵팽을 위해서는 다음과 같이 사용 할 수 있다. 특히 JPA 사용사 멀티 PK를 사용한 Entity 를 사용시 @embeded 를 이요한 내부 Class 를 이용할때 혹은 객체를 이용할때 association tag는 유용하다. innnerClass 선택은 xml 에서 $을 . 대신에 사용해 준다. Entity Class 생성 AdsEntityPK 를 내부 Class로 가지고 있다. @Entity @Table(name = "ads") @Getter@Setter @EqualsAndHashCode(callSuper = true, exclude = {"adGroupEntit..
mybatis 문법 foreach 리스트객체로 보낼경우 parameterType="java.util.List" , collection = "list"로 받아서 처리 한다. item 은 el tag 안에서 사용할 변수명 this.jobMapper.findAllByJobId(List.of(masterJobId) SELECT `job_execution_id`, `master_job_id` as `job_id`, `job_name`, `total_size`, `processed_count`, `start_time`, `end_time`, `status`, `exit_status`, `message`, `request_details`, `requester`, `last_update` FROM `ae_report`..
JPA Inner Join , left join JPA로 저장이 잘되던 내역이 갑자기 저장이 되지 않고 중복에러를 뱉어 냈다. 어째든 내가 어딘가를 수정 했겠지.. save 시에 저장되는 쿼리를 살펴 보니 inner join 형태로 조인되어 지고 있었다. 1:1 관계로 맺어둔 엔티티들이 문제였다. (이래서 왠만하면 1:N 으로 묶는구나 싶었다.) 1:1 상황에서 연관된 객체를 영속성있게 해주지 않으면 부모 객체의 PK 값만 넣어줬을때 조회후 중복으로 체크되어 if (entityInformation.isNew(entity)) 에서 true로 merge 되도록 하지만 중복 오류가 발생된다. merge문을 타도록 되어 있지만 sql 로그에 찍히는 걸보면 insert 문이 찍힌다. - 연관된 1:1 객체는 모두..
JPA paging 속성 값 int getNumber(); //현재 페이지 int getSize(); //페이지 크기 int getTotalPages(); //전체 페이지 수 int getNumberOfElements(); //현재 페이지에 나올 데이터 수 long getTotalElements(); //전체 데이터 수 boolean hasPreviousPage(); //이전 페이지 여부 boolean isFirstPage(); //현재 페이지가 첫 페이지 인지 여부 boolean hasNextPage(); //다음 페이지 여부 boolean isLastPage(); //현재 페이지가 마지막 페이지 인지 여부 Pageable nextPageable(); //다음 페이지 객체, 다음 페이지가 없으면 nul..
DATA _ADD, ADDDATE Mysql의 Function 사용 시작하기 전에 먼저 이야기 하지면, INTERVAL 이란 예약어 때문에 하이버네이트에서는 사용 할 수가 없다. DATA_ADD 에서 INTERVAL 을 쓰면 구문을 해석 할수 없다고하는 오류를 볼 수 있다. MYSQL 에서는 ADDDATE라는 것이 있는데 해당 펑션을 이용해서 날짜를 더할때 사용 하도록 한다. Expressions 사용 표현식을 이용하여 내부 Function을 사용한다. // DateOperation Expressions.dateOperation(Date.class, DateTimeOps.ADD_DAYS,qCampaignEntity.endTime,Expressions.asNumber(1)); // DateTemplate ..
QueryDsl Null Null 인경우 다른 값으로 채우기 coalesce LocalDate localDate = LocalDate.now(); Date criteriaDate = DateUtils.convertStringToDate(localDate.toString(), CalendarPattermn.CALENDER_TYPE_YYYY_MM_DD); whereBuilder.and(qCampaignEntity.startTime.coalesce(criteriaDate).asDate().loe(criteriaDate)
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..