목록전체 글 (110)
Skipalong's tistory
오늘은 플러스 주차 팀 프로젝트 발제가 있었다. 이번 프로젝트는 트렐로를 만드는 프로젝트이다. 트렐로란 일종의 투두앱인데 원하는 유저들을 초대해 할 일을 공유하며 협업에 대한 부분까지 챙긴 서비스 이다. 내가 맡은 부분은 카드 관리기능으로 투두 어플로 치면 할일 목록의 CRUD에 해당하는 부분이다. 그동안 CRUD는 많이 해보아서 익숙하지만 이번 프로젝트에서는 Entity끼리 엮여있는 부분이 많아 연관관계 설정에 대한 부분이 어려운 것 같다. 컬럼과 유저 댓글등과 연관이 되어있고 작업자 할당/변경, 카드 이동에 대한 부분도 어떤 기능을 의미하는지 아직 잘 모르겠다. 일단 대략적인 CRUD 를 구성하고 트렐로서비스를 직접 경험해 보면서 감을 잡아야 할 것 같다. 팀원들과도 소통을 많이 하며 최종프로젝트 전..
오늘은 JPQL 과 QueryDSL 에 대해 정리해보겠다. JPQL 1. EntityManager.createQuery() 쿼리 문자열과 Entity를 직접 넣어서 쿼리를 작성한다. @Test public void testEmCreateQuery() { String qlString = "select u from User u " + "where u.username = :username"; Member findUser = em.createQuery(qlString, User.class) .setParameter("username", "teasun") .getSingleResult(); assertThat(findUser.getUsername()).isEqualTo("teasun"); } 2. @Query 쿼..
오늘은 SpringData JPA강의에서 배운 DynamicInsert와 DynamicUpdate에 대해 정리해보려고 한다. DynamicInsert 를 사용하면 원하는 Entity에 Insert 쿼리를 날릴 때 null 인 값을 제외하고 Insert 쿼리문이 만들어진다. 마찬가지로 DynamicUpdate를 사용하면 원하는 Entity에 Update 쿼리를 날릴 때 null인 값을 제외하고 Update 쿼리문이 만들어진다. DynamicInsert와 DynamicUpdate를 사용하게 되면 쿼리문을 null인 값을 제외하고 쿼리를 날리기 때문에 속도에서 많은 차이가 나게 된다. 지금개발하는 프로젝트에서는 Entity의 필드가 많지 않고 null인 값이 많지 않기 때문에 속도차이가 많이 나진 않지만 나중..
오늘은 스탠다드반 수업때 배운 CI/CD에 대한 내용을 정리해보겠다. CI(Continuous Integration) - 지속적인 통합 CI는 버그수정이나 새로운 기능들을 Git과같은 Repository에 주기적으로 build, test, merge되는 것을 의미한다. 협업을 할 때 여러가지 문제가 생길 수 있다. 서로 올린 코드가 conflict날수도 있고 테스트코드를 없이 검증되지않은 코드를 배포하게 될 수 도 있다. conflict가 나는 문제는 코드 변경사항을 주기적으로 빈번하게 병합을 하는 것이다. 또 테스트코드없이 검증되지않은 코드를 배포하게될 수 있는 문제점은 PR 단계에서 코드리뷰를 거쳐서 merge될 수 있게 하고, 코드리뷰를 통과하면 CI Script가 실행되게 하여 build, tes..
오늘은 JPA 심화 강의를 듣던 중 지금까지 무심코 사용했지만 자세한 내용은 잘 알지 못했던 부분에 대해 정리를 해 보겠다. 평소에는 Controller-Service-Repository 레이어 를 사용하면서 Repository는 간단하게 인터페이스로 만들어주고 JpaRepository를 상속받아주는것으로 구현을 하면 Repository의 필요한 기능들을 거의 다 사용가능해서 좀 더 알아보려고 하지 않았었다. 하지만 이번 JPA심화 강의를 들으면서 이것이 어떻게 가능한지, 실무에서는 어떻게 사용하는지 배운 것이 있어서 정리해보겠다. 우선 상속받는 JpaRepository가 어떤식으로 구성되어있는지를 알게 되었다. JpaRepository는 CrudRepository를 상속 받아 save, delete, ..
오늘은 개인과제를 모두 마무리 했다. 이메일, 페이징, 이미지 업로드 등 새로 시도해본 기능들이 많아서 의미있었던 것 같다. 그 중 오늘 새로 해 본 스케쥴링에 대해 정리를 해보겠다. 우선 요구사항은 수정된 지 90일이 지난 데이터를 삭제해주는 스케쥴러를 구현하는 것이었다. 작성한 코드는 이렇다. PostService에 deleteOldPosts라는 메서드를 추가하고 @Scheduled 어노테이션과 @Transactional 어노테이션을 추가해주고 @Scheduled 어노테이션에는 cron 형식으로 스케쥴이 언제 수행될 지를 정의해주었다. Cron방식은 Cron은 6자리로 이루어져 있고, 초 - 분 - 시 - 일 - 월 - 요일 순이다. ex) * * * * * * : 매초 실행 0 0 0/1 * * :..