목록모든 글 (287)
개발자로 후회없는 삶 살기
🚨 서론 (문제상황)@Beanpublic RedisTemplate redisTemplate( RedisConnectionFactory redisConnectionFactory, ObjectMapper objectMapper) { Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(AccessTokenSaveResponseDto.class); jsonRedisSerializer.setObjectMapper(objectMapper); // 여기 ✅Redis의 Serializer는 내부적으로 ObjectMapper를 사용하여, 객체 ↔ JSON 직렬화, 역직렬..
🚨 서론 (문제 상황)Redis는 단순 데이터 저장뿐만 아니라, 캐싱, 메세지 콜백 등 다양한 기능으로 활용도가 매우 높다. 그 중 정밀한 이벤트 핸들러를 제공하는 Redis Stream을 사용하고자 했고, 일반 (키-벨류, 해시맵) 형태가 아닌 특수한 자료구조라서, 사용하기 전에 자세히 알아보고자 한다. 본론- 자바의 직렬화 & 역직렬화직렬화 : 자바의 Object를 다른 컴퓨터의 자바 시스템에서 사용할 수 있도록 저장하는 것을 의미한다. Object를 연속된(Serial) 바이트 스트림 형태로 포맷 변환하는 기술이다.역직렬화 : 바이트 스트림을 원래대로 자바 시스템의 Object로 변환하여 로드하는 기술이다. JVM 클래스 로더 시스템을 보면 클래스 정보가 메서드 영역에 저장되고 Object가 힙,..
서론롯데 이노베이트에서 진행한 미션을 과정을 기록합니다. 본론-> 전체 코드[깃허브] - 프로젝트 주제기존 text2img 이미지 생성 모델들은 영어 프롬프트를 기반으로 동작하므로, 한국어를 입력하면 다음과 같은 결과가 나옵니다. 프롬프트 : "여름 날씨에 수영장에서 즐겁게 놀고 있는 가족의 모습. 수영장은 맑은 물과 다양한 수영 놀이 시설이 있으며, 가족들은 물속에서 즐거운 시간을 보내고 있습니다."이는 한국어를 전혀 이해하지 못하고, 이미지 생성에 필요한 적절한 텍스트 임베딩을 하지 못하기 때문입니다. 프롬프트 : "여름 날씨에 수영장에서 즐겁게 놀고 있는 가족의 모습. 수영장은 맑은 물과 다양한 수영 놀이 시설이 있으며, 가족들은 물속에서 즐거운 시간을 보내고 있습니다."따라서, 한국어 텍스트를..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 스프링 데이터 JPA 적용스프링은 Repositoy를 인터페이스로 구현체를 CGLIB으로 등록해서 편리한 기능을 제공한다. Jpa 레포지토리에는 find 관련 메서드들이 이미 구현되어 있어서, 가져다 사용하면 된다. jpa 레포지토리는 RDB 관련 메서드만 제공한다. Page Sort는 data 하위 인터페이스로 레디스 몽고를 다 지원한다. 몽고와 레디스도 페이지와 정렬을 지원하므로 추상화한 것이다. 스프링 데이터는 데이터 공통 기술이고 스프링 데이터 JPA는 RDB 기술이다. 몽고, 레디스를 쓰면 스프링 데이터를 다 사용할 수 있다. - 쿼리 메서드 기능이처럼 findAll 같은 공통 기능을 제공하는데, ..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- JPQL 소개JPA는 다양한 방법으로 SQL을 사용할 수 있다. 🚨 나이가 18 이상인 회원을 검색하고 싶다면 em.find로 할 수 있나?따라서 JPQL이 나왔고 엔터티 객체 중심으로 쿼리를 짤 수 있다. m은 엔터티 자체를 의미하며, m 객제 자체를 조회하라는 의미이다. → 규칙1) 엔터티 필드는 대소문자 구분함2) jpql 키워드는 대소문자 구분 없음3) 별칭(m) 필수 → Type, QueryType은 반환 타입이 명확할 때(Member) Query는 명확하지 않을 때(이름과 나이) createQuery에 타입 정보를 줄 수 있으면 Type을 쓰고, 문자만 쓰면 String도 class를 할 수 있..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 프록시프록시가 뭔지 알아보고 활용해보자, 예를들어서 멤버에 팀이 있는데 멤버를 조회할 때 팀도 DB에서 무조건 조회해야 할까? 고민하는 상황이다. 멤버와 팀을 같이 출력하는 경우라면, 회원과 연관된 팀을 불러와서 출력하고, 이런 비즈니스 로직에서는 멤버를 가져오고 팀도 한 번에 한 방 쿼리로 가져오면 좋을 것이다. 근데, 팀은 출력하지 않고 회원만 출력하려고 하면? DB에서 연관됐다고 해서 사용하지 않는 팀도 가져오면 손해이다. 언제는 멤버와 팀을 같이 사용하고 언제는 멤버만 사용하고 하면, 낭비를 고려해야 한다. JPA는 이걸 프록시로 해결한다. ⇒ 프록시 기초em.find : DB에서 진짜 객체를 가져온..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 연관관계 매핑 시 고려사항1. 다중성db는 다측에 1측의 fk를 두며, 객체는 이를 따라 다측에 JoinColumn을 한다. 대부분 다대일을 많이 쓰고, 일대일도 가끔 사용하고 다대다는 절대로 안한다. 2. 단, 양 방향DB는 방향의 개념이 없고, fk 하나로 양쪽에 접근할 수 있지만, 객체는 참조를 두어 직접 접근해야하고 단방향 2개가 양방향이다. ⇒ 다대일1. 단방향주인에 참조를 두고, DB는 다측에 외래키, 객체는 JoinColumn을 한다. 가장 많이 사용하는 방법이다. 2. 양방향1측에 List를 두어 양방향을 만들 수 있다. 설계할 떄는 양방향을 전혀 고려하지 않아도 되고 어플 개발 단계에서 jp..