IT/프로그래밍 11

[Java/Hibernate] 검색을 자유롭게 하고싶은데.. 좋은 방법이 없을까?

현재 회사에서 사용하는 언어와 주 포지션으로 하고 있는 언어의 차이가 있어 주 사용 언어는 잊지 않도록 개인 프로젝트를 많이는 아니더라도 조금씩만 하고있다. 하루에 1시간.. 정도..? 그러다 아래의 고민이 생겨 처리 방법을 찾다가 그렇구나 싶어 메모해둔다 현재 Spring Boot3, JPA 를 활용해 게시판 비슷한 걸 해보고 있다. 템플릿 형식으로 내 개인 repo 에 남겨두고 싶어서.. 페이징 처리를 최근에 하고 있는데 기능이 확실히 좋더라 Pageable 이라는 인터페이스로 편하게 사용할 수 있고, 요청 받을 땐 편하게 받고 후에 PageRequest class를 통해 쉽게 변형도 가능했다. 이제 문제가 시작됐다. 검색어 처리에 대해 일반적인 검색을 과거에 난 흔히 말하는 날쿼리(SQL) 을 작성..

IT/프로그래밍 2024.03.28

SpringBootTest Could not resolve placeholder 'spring.profiles.active' 테스트 하게 해! 줘!

정말 굵고 짧은 글이 될 것이다. SpringBootTest Could not resolve placeholder 'spring.profiles.active' Junit 테스트를 하다가 위와 같은 에러를 만났다. 이게 뭐냐?? 너 지금 프로필 있는 설정파일 써야하는데 프로필을 안알려주면 실행 못해~ 라는 이유로 실행 시켜주지 않는 것이고, 테스트 하는 곳에 아래와 같은 내용을 넣어봐 라는 내용이 많았습니다. @SpringBootTest @ActiveProfiles("test") 하지만 실패.. 해결방법은 아래와 같았습니다. @SpringBootTest(properties = "spring.profiles.active:test") 아주 간단한 것이었어요... 그냥 에러 내용대로만 했어야 했던 것이다. 친절..

IT/프로그래밍 2022.10.28

[Typescript/Express] Typescript 를 익힐 겸 백엔드 프로젝트를 해보자! (3)

오늘은 어제 작업을 하다가 왜 안되는걸까?? 했던 부분을 작성하려고 한다. 상품등록 API 에 대해 관리자에서 작업을 하고 리스트 및 수정 기능에 대해 동작확인을 진행하고, 사용자 API 에 상품리스트 API 를 구현하던 중 쿼리는 비슷하게 구현해서 사용했어서 위화감을 느끼지 못하고 있다가, "설명을 빼먹었네~ 설명 컬럼도 조회해서 보여주자!" 라는 생각으로 조회쿼리에 설명 컬럼을 조회하도록 수정하였다. 이 때, 문제가 발생했다. 설명 컬럼(description) 이 조회가 안되는 것이다. 결론부터 얘기하면 TypeORM 에서 제공하는 관리자 API 쪽에서 DB 조회할 때 사용하던 Repository 파일 내에 있는@EntityRepository(Goods) 문을 제거하면서 원하는 동작을 했다. 하지만 ..

IT/프로그래밍 2021.10.16

[Typescript/Express] Typescript 를 익힐 겸 백엔드 프로젝트를 해보자! (2)

벌써 10월의 둘째주라니.. 하루하루가 너무 빠르다. 저번 포스팅에 이어 프로젝트 구성에 대해 더 보고 넘어가려 한다. asyncHandler 라는 것을 통해 async(req, res, next) 를 매번 작성하지 않을 수 있도록 했었다. 이번은 decorator 를 활용해 POST, GET, PUT, DELETE 를 구현하여 router 에 등록시켜주는 함수를 살펴보자. 사실 nest JS 프레임워크를 사용하면 되지만 괜히 해보고 싶고 궁금해서 순수 TS로 하니 귀찮아서 하게 된.. 작업.. Get Http 메서드를 데코레이터 패턴으로 구현하여 컨트롤러에 @Get(name) 형태로 사용 시 route 에 자동으로 등록이 되는 형태로 구현하려고 한다. 먼저 route 에 등록하는 모습을 보자 impor..

IT/프로그래밍 2021.10.12

[Typescript/Express] Typescript 를 익힐 겸 백엔드 프로젝트를 해보자! (1)

express Route 를 통해 서버 통신을 할 수 있는 기본적인 URL 매핑을 진행하고, async -await 을 통한 비동기 처리 응답을 가능하게 해보자. typescript 를 익히는데 그냥 익히기만 하면 재미가 없으니 문법 + 프로젝트를 같이 해보려고 작업을 진행해보고 있습니다. 먼저 프로젝트는 커머스를 타겟으로 하고 있습니다. 오늘은 Route 설정하는 내용 관련해서 공유하려고 합니다. 우리가 흔히 Express 라우트 설정하는 부분은 공식페이지만 봐도 알 수 있지만, 한 번 스윽 훑어보면서 이런 점이 다르구나 라는 게 있기를 바랍니다. import express from 'express'; const app = express().Application; app.get('/', (req, re..

IT/프로그래밍 2021.09.13

[JAVA/JPA] JPA.. 이름만 들어봤다!! 이제라도 알자..

업무를 진행하면서 Spring 을 사용하는 것이 처음이라 생소한 것들이 많다. 이전에는 순수 자바 1.7 + 서블릿 + MyBatis 를 사용했기에 모르는 내용이 많아 최근 들어 공부를 진행하고 있다. 하지만 업무는 날 기다려주지 않고, 코드리뷰 진행 시 내가 모르는 부분에 대해 질문했고, 이에 대한 답변으로 들었던 내용을 모르고 이를 뒷받침하는 JPA 영속성 컨텍스트를 모르기 때문에 찾아봤다. 질문: 분명 save(), commit(), flush() 라는 코드를 명시적으로 작성하지 않았는데 데이터가 왜 업데이트 된건가요? 답변: 그건 Entity Manager 가 처리해줘서 그래요! 라고 답변을 받았다. 너무나 쇼킹했고 더 궁금해서 자료를 찾았는데 이 또한 김영한 님의 JPA 강의를 듣고 작성한 것 ..

IT/프로그래밍 2021.07.28

[NodeJS/Redis] 캐시를 사용한 리스트 전달하기

최근에 프로젝트를 진행하면서 구현했던 기능 중 하나에 대해 포스팅하고자 한다. 해당 기능을 구현하는데 사용된 것은 Redis, MySQL, NodeJS 이렇게 3가지가 주된 기능을 구현하는데 사용됐다. 개요는 위와 같고, 실제 구현된 기능에 대한 메인 요구사항은 다음과 같다. 관리자 페이지에서 등록된 이벤트 중 진행중인 이벤트 리스트는 상위에서 랜덤한 리스트 배열로 전달해주시고, 이외에 신청한 이벤트/종료된 이벤트는 아래에서 무한스크롤로 할 수 있도록 해주세요. 이 기능에 대해 등록되는 이벤트들의 개수는 큰 변화가 없을 것이고 빈번한 수정이 일어나는 리스트 데이터가 아니기 때문에 캐싱을 하여 작업하도록 설계했고, 이외에 무한스크롤에 해당하는 데이터는 실제 RDB에 접근하여 전달하도록 설계했다. 구현한 순..

IT/프로그래밍 2021.05.04

[NodeJS] Sequelize에서 JSON 안에 JSON 처리는 어떻게 해?

간만에 또 이렇게 글을 써 본다. 내용은 매우 간략하지만 처음 경험하는 것이라서 이 부분으로 인해 열심히 삽을 팠다! 사용 라이브러리 Sequelize : 6.6.1 Node: 12.13.1 RDS: MySQL Aurora 위와 같은 환경에서 아래와 같이 테이블을 생성했다. Schema sequelize.define( 'test' { name: { type: DataTypes.STRING(10), allowNull: false, comment: '테스트 테이블내 컬럼, 이름' }, contents: { type: DataTypes.JSON, allowNull: false, comment: '테스트 내용', }, }; 위와 같은 스키마를 정의했다는 가정하에 데이터는 아래와 같다. { name: '테스트',..

IT/프로그래밍 2021.04.15

[JS] 휴대전화번호 정규식

오랜만에 작성하는 블로그! 이유는.. 뭘 써야할 지 잘 몰랐어서 안쓰다가 오늘 간만에 쓰게 됐습니다. 최근 TDD 를 통해 회사 프로젝트를 구성하고 실행해 보고 있습니다. 그러면서 테스트 케이스를 작성하게 되는데 그 중 일부를 발췌해 작성해봅니다~ 업무를 할 때마다 늘 마주치는 휴대전화번호 입력 그리고 생년월일 입력이 있습니다. const { expect, assert } = require('chai'); describe('정규식 테스트 진행', () => { it('휴대전화번호 정규식 테스트', () => { /** * 조건, 휴대전화번호만 전달되는 경우, 하이픈이 같이 들어오는 경우 * 휴대전화번호 맨 앞자리는 지금은 010으로 통합됐으나, 이전엔 아니었음. * 010, 011, 012, 016, 0..

IT/프로그래밍 2021.04.09

좌충우돌 Sequelize 5.x 에서 Sequelize 6.x 로 마이그레이션

회사에서 Sequelize 5.x -> Sequelize 6.x 로 마이그레이션을 해보려던 중 마주쳤던 라이브러리 지원 함수 삭제 등으로 인한 이슈가 있었다. 오늘은 이에 대해 한 번 써보려한다. 회사에서 5.x -> 6.x 을 진행하면서 생겼던 내용에 대해서만 기술하기 때문에, 이외에 다른 내용이 있다면 댓글로 작성해주시거나 하면 다른 분들에게도 공유될 수 있어 좋을 것 같습니다 ^오^ 우선적으로 회사에선 기존에 Sequelize 4.x 와 Sequelize 5.x 를 각 프로젝트에서 쓰고 있었다. 하지만 지금의 Sequelize 버전은 몇이지..?! 무려 6버전이다.. 자잘한 Minor 버전을 제외한다고 해도 라이브러리 버전이 차이가 난다. 그리고 NodeJS 버전도 낮았기에.. 하하.. 라이브러리 ..

IT/프로그래밍 2021.03.31
반응형