본문 바로가기

728x90
반응형
SMALL

전체 글

(109)
변경된 칼럼만 update 하기. Dirty Checking으로 생성되는 update 쿼리는 기본적으로 모든 필드를 업데이트한다. 또한 JPA는 전체 필드를 업데이트하는 방식을 기본값으로 사용한다. 필드가 20~30개 이상인 경우에 전체 필드 update가 부담스러운 경우 (이런 경우 정규화가 잘못된 확률이 높다.) @DynamicUpdate로 변경 필드만 반영되도록 할 수 있다. 엔티티 최상단에 @DynamicUpdate를 선언해준다. @Entity @Getter @DynamicUpdate //변경된 데이터만 업데이트 public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String teamName; } 끝
Dirty Checking(더티 체킹) 이란. JPA는 조회, 저장, 삭제에 대한 기능을 제공하지만, 수정에 대한 기능이 따로 존재하지않는다. 그래서 Dirty Checking 이란 것을 제공한다. JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영해준다. 변화의 기준은 최초 조회 상태이다. 이런 JPA 에서는 수정에 대한 기능이 따로 존재하지 않기 때문에, Dirty Checking 을 제공해주는데. Dirty Checking은 Transaction 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영하는 JPA 특징이다. 이해를 위해 예시를 보자. Member라는 테이블에 ID=5 에 해당하는 데이터가 들어있다. [Controller] @PutMapping("/test") pub..
SpringBoot Paging(페이징)에서 제공하는 변수 커스터마이징 하기. public void pagingInfo(Pageable pageable){ } Pageable 객체는 개발자가 페이징을 쉽게 할수 있도록 도와줍니다. Pageable 객체 안에는 기본적으로 제공하는 메소드 기능들이 있습니다. 그중 저희는 getPageSize와 getPageNumber 를 볼 겁니다. getPageSize는 나타내고자 하는 요소의 수를 나타냅니다. getPageNumber는 현재 페이지를 나타냅니다. 기본적으로 요소의 수는 파라미터명이 = size, 현재페이지 정보는 = page 로 되어있습니다. 예시를 보면 url : http://localhost:8080/api/v1/members 설명 : 멤버의 전체목록리스트를 불러오는 api 입니다. 가정 : 유저100명. 이대로 API 요청을 ..
MongoDB active failed 문제( result- exit-code) sudo systemctl status mongod 확인해보니, 계속 Active: failed 만 발생하고, 몽고디비가 실행이 안됍니다. 그리고 아래의 오류메세지를 직면합니다. sudo systemctl start mongod 암만 mongod 실행시켜도 무반응으로 Active 상태가 바껴있지않습니다. 이럴때 해결책. sudo vi /var/log/mongodb/mongod.log {"t":{"$date":"2020-10-07T05:13:22.639+00:00"},"s":"E", "c":"NETWORK", "id":23024, "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock"..
QueryDSL 연산자 비교식 정보 //Standard Alternative expr isNotNull expr is not(null) expr isNull expr is null expr eq "Ben" expr === "Ben" expr ne "Ben" expr !== "Ben" expr append "X" expr + "X" expr isEmpty expr is empty expr isNotEmpoty expr not empty // boolean left and right left && right left or right left || right expr not !expr // comparison expr lt 5 expr = 5 expr notBetween(2,..
외부에서 Redis 설치/접속하기 외부에서 redis를 접속하기 전, 해당 서버에서 redis를 먼저 설치해주자. 설치 [apt-get을 업데이트 해주자] sudo apt-get update sudo apt-get upgrade [redis-server 설치해주자] sudo apt-get install redis-server [잘 설치 되었는지 확인] redis-server --version 외부접속 허용 해당 서버에서 /etc/redis.conf 영어로 쭉 뜰거다. 쭉 내리다보면 # bind 127.0.0.1 로 주석이 되어있는 거를 볼수있다. 'bind 127.0.0.1 -> bind 0.0.0.0' 로 변경해준다. 적용을 했으니 서버를 재기동해준다. sudo systemctl restart redis-server.service 암호..
Springboot + chatGPT API 연동해보기. springboot 에서 chatGPT API를 연동해보겠습니다. 생각보다 어렵지 않으니 순서대로 따라오시면 됩니다. 우선 chatGPT API 를 이용하기 위해 API-KEY가 필요합니다. https://platform.openai.com/account/api-keys OpenAI API An API for accessing new AI models developed by OpenAI platform.openai.com 링크를 따라 들어가면, 로그인 해야할겁니다. 로그인 후 위에 링크를 다시 들어가면, 아래에 + Create new secret key 를 발급 받으실 수 있습니다. 추후에 api 사용을 위한 api-key 이니, 알고계셔야 합니다. 이제 프로젝트를 생성해봅시다. id 'org.sprin..
spring 에서 @Async 어노테이션 사용하기(비동기) spring에서 @Async 를 이용하여 비동기로 서버를 구축할 수 있다. [AsyncConfig.java] @EnableAsync public class AsyncConfig { @Bean public Executor getAsyncExecutor(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(8); executor.setMaxPoolSize(8); executor.setQueueCapacity(500); executor.setThreadNamePrefix("test-pool-"); executor.initialize(); return executor; } } 먼저 비동기를 위한 기본 ..

728x90
반응형
LIST