본문 바로가기

전체 글

(56)
내배캠 11주 4일 차 오늘 써 볼 것은 페이지네이션 할 때 pageable로 요청받을 때 sort부분에서 ASC, DESC을 받는 부분에 대해서 좀 써볼까 한다. 페이지네이션 하는 방법이라기보다는 요청을 받는 방법을 몰라서 좀 빙 돌려서 구현했다가 요청방법을 알아서 써보는 것이다.내가 구현한 요청 받는 방식은 아래와 같다.   페이지 위치랑, 한 페이지에 보여줄 개수, 정렬 기준이다. 정렬기준은 여러 기준으로 받지 않고 하나로만 받는다. 왜? 하나만 받냐고 할 때 여러 정렬을 처리할 이유가 있나 싶어서이다. 보통 게시판을 볼 때 오름차순, 내림차순은 하나의 기준으로 하지 여러 기준으로 하지 않기에 하나로만 받을 생각이다. 아무튼 sort의 schema에서 보는 것처럼 저 형식으로 적어서 요청을 보내면 컨트롤러에서 아래와 같이..
내배캠 11주 3일 차 오늘도 뭔가 많은 걸 하진 않았다. 과제도 딱히 진도가 나간 것도 없고 강의도 진도가 나간 거는 거이 없다. 그래도 오늘 배운것에 대해서 간략하게 적어보겠다. 배운 것은 JPA에 관해서 였는데 ORM은 무엇인지 영속성 컨텍스트정도이다. ORM은 무엇일까? Object Relational Mapping으로 객체지향 프로그래밍 언어를 사용하면서 이와 호환 되지 않는 시스템 간에 데이터를 변환하는 것이고 이 중 하나가 JPA(Java Persistence API)가 되겠다. 그럼 왜 JPA가 등장했을까? 스프링을 이용하면서 데이터를 유지하려고(영속성을 부여하려고) RDB(Relational Dababase)을 이용하게 됐다. RDB는 SQL(Structured Query Language)라는 문법이 따로 존재..
내배캠 11주 2일 차 오늘은 과제 진행과 강의 영상을 봤다. 뭔가 많은 것을 하진 않았는데 하루가 벌써 끝나간다. 뭔가 쓸 내용이 없는 거 같아서 과제는 뭘 했는지에 대한 것을 써보겠다.  과제는 게시물의 좋아요 추가, 삭제 기능과 계정 생성 시 비밀번호 암호화 하기를 했다. 그리고 QueryDsl을 사용해서 게시물 조회시 키워드 검색과 정렬하기를 구현했다. 그리고 게시물 조회할 때 사용자의 정보를 가지고 사용자가 좋아요를 누른 게시물인지에 대한 정보를 DTO(Data Transfer Object)에 담아서 반환했다. 이 과정에서 어려웠던 것은 좋아요를 눌렀는지 확인 후 반환하는 것이었다. 이 과정에 대해서 좀 써보겠다.  처음에는 게시물 조회한 목록을 반환할 때 사용자의 정보와 게시물의 정보를 갖고 좋아요 테이블에서 좋아요..
내배캠 11주 1일 차 오늘은 과제를 진행했다. 기본적인 crud는 대부분 했는데 문제는 사용자의 인증 및 인가처리였다. 스프링 시큐리티를 이용해서 인증, 인가를 처리하면 되지만 지금껏 과제를 하면서 전부 시큐리티를 활용했기 때문에 이번에는 시큐리티 없이 구현해보고 싶었다. 또한 마침 스프링 AOP(Aspect Oriented Programing)의 개념을 간단하게 배웠기 때문에 AOP를 이용해서 중복 로직을 한 번에 해결하고 싶었다. 내가 원했던 방식은 시큐리티에서 썼던 방식과 비슷하게 하는 것이었다. 그래서 먼저 시큐리티에서 했던 처리방법을 얘기하겠다.  시큐리티를 이용한 인증 인가 구현 시큐리티 필터@Componentclass JwtAuthenticationFilter( private val jwtPlugin: Jw..
자바 접근 제한자 이번에 코틀린을 사용하다가 자바의 접근 제한자에 대해서 궁금한 것이 생겨서 내가 공부한 내용을 정리해 보려고 한다. 먼저 자바의 접근제한자는 4가지가 있다.1. public  : 어느 곳에서나 접근이 가능함2. protected : 다른 패키지에서는 접근이 불가능함 *단 상속받은 클래스에서는 접근이 가능함3. default : 다른 패키지에서는 접근이 불가능함4. private : 자기 클래스에서만 접근이 가능함public > protected > default > private 순으로 더 많은 접근이 가능하다. private부터 확인해 보자변수들은 private으로 설정해 두고 나머지 생성자, 게터 세터는 퍼블릭으로 해뒀다.다른 파일들을 확인해 보자같은 패키지임에도 name에는 접근이 안되나 게터함수를..
내배캠 10주 5일 차 오늘은 뭐.. 과제하느라 딱히 공부한 것은 없다... 과제할 때 다른 분들이랑 모여서 서로 모르는 거나 안 되는 거를 도와주는 정도만 했는데 다른 분을 도와줄 때 코드를 보고서 충고를 하게 됐다. 물론 내가 충고를 할 정도로 남들보다 잘하는 것은 아니지만 그분은 아직 프로그래밍이 좀 약하기 때문에 남의 코드를 막 가져와서 구현을 한다. 이 방식은 잘못된 것이 아니라고 생각하지만 아무것도 모르고 그냥 가져와서 구현되니깐 넘어가야지라는 마인드였던 거 같아서 뭐라고 한 거 같다. 구현만 해놓고 테스트할 때 왜 안되지? 어디가 문제점인지 흐름조차 파악이 안 되었기 때문에 그러면 안 된다고 했다. 뭔가 말해놓고도 좀 미안하다는 생각이 들었다. 그러나 그렇게 계속해버리면 나중에 본인이 피해를 보기 때문에 더더욱 그..
내배캠 10주 4일차 또 오랜만에 돌아온다..매번 프로젝트하다가 TIL 쓰는 게 귀찮아서 안 쓰게 되는 거 같다. 이번에 쓸 내용은 자바 클래스의 접근제어지시자의 관해서이다.오잉? 뜬금없이 코틀린 하는데 자바라니 무슨 소린가 할 수 있다. 일단 왜 그런지 배경을 알아보자 Comment.kt의 일부@Entity@Table(name = "comment")class Comment{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @Column(name = "content", nullable = false) var content: String? = null @Column(name = "created_at", nu..
내배캠 9주 2일 차 오늘부터 스프링 심화과정 프로젝트 시작이다. 일주일 동안 프로젝트를 진행하는데 주제는 백오피스 관련이다.내 팀은 JIRA 사이트처럼 팀 단위로 게시글을 작성하고 팀에 속한 사람만 그 게시글을 볼 수 있는 사이트를 만들기로 했다.일단 제일 힘들었던 것은 프로젝트 기획이랑 세부 내용을 정하는 것이 가장 어려웠다. 어떤 기능이 필요한지 그 기능을 만들면서 필요한 것들은 무엇인지를 정하고 협업을 하기 위한 준비를 하는데 오늘 하루를 다 썻다. 역시 팀 프로젝트는 시작부터 어려운 것 같다. 또한 사람마다 바탕과 지식이 다르니 팀원이 하는 말을 모르는 것들이 많았다. 이래서 역시 기초가 중요하다는 것을 다시 한번 깨닫게 됐다.   프로젝트는 이슈(게시글), 댓글, 멤버(유저), 팀의 4가지 기능?이 있어 이를 각자..