QueryDSL 란? QeuryDsl -> 복잡한 쿼리, 동적쿼리 를 위한 라이브러리 이다. 또한 Q 클래스를 생성한다. 장점은 ㄴ 쿼리를 자바 코드로 작성하기 때문에 문법 오류를 컴파일 시점에서 해결. ㄴ 동적 쿼리 문제 해결 ㄴ 쉬운 SQL 스타일 문법 ㄴ 단순 반복 X ㄴ 개발자가 비즈니스 로직에만 집중할수 있도록 도움. 단점은 ㄴ 초기 설정이 불편하다.. 주의사항 Q 클래스들은 버전 up 이 될시 세부적으로 바뀔수 있으므로 git 에 올리지 말것 - 쓰는데 상관 없음. JPQL vs QueryDSL JPA 에서 지원해주는 JPQL 과 QueryDSL 의 차이점은 JPQL 은 직접 쳐야하지만 QueryDsl 은 매서드가 존재함으로 실수 할 가능성이 낮다. 즉 컴파일 오류를 잡아주니 QueryDsl ..
오늘의 공부 오늘은 JPA 시험을 보았지만, 아직 JPA 연관관계에 대해서 헷갈려하는것 같아서 다시 문제를 풀고 강의를 들었다.. https://domae.tistory.com/100 JPA 1:1 연관관계 - @OneToOne 1:1 단방향 Entity에서 외래 키의 주인은 일반적으로 N(다)의 관계인 Entity 이지만 1 대 1 관계에서는 외래 키의 주인을 직접 지정해야합니다. 외래 키 주인만이 외래 키 를 등록, 수정, 삭제할 수 있 domae.tistory.com https://domae.tistory.com/101 JPA N:1 연관관계 - @ManyToOne N:1 단방향 @Entity @Table(name = "food") public class Food { @Id @GeneratedVal..
오늘의 공부 STOMP 를 구현을 하면서 @Payload 관련되어서 오류가 하나 떠서 해당 @Payload 에 대해 알아볼려고 구글링을 하였다. @Payload 는 자체가 byte 형식으로 보내게 되는데, 나는 ChatController 에서 @AuthenticationPrincipal 이 어노테이션을 통해 유저에 대한 정보를 가져올려고 하였다. 하지만 Filter 에서 SercurityContext 에 데이터를 넣어놓고 가져오게 되는데 작동하지 않았다. 왜냐하면 프로트콜이 HTTP 프로트콜이 아닌 ws 프로트콜을 이용하기 때문에, 검증을 안하기 때문에 만약 검증을 한다면 필터를 하나 생성하여 처리 해야한다. 그러므로 저 어노테이션은 현재 데이터가 안들어오게 된다. 그래서 해결 방법으로 ws 프로트콜을 ..
오늘의 공부 오늘은 STOMP 를 구현시키고 그 해당 테스트를 진행할려고 하였지만 PostMan 에서는 WebSocket 만 테스트가 가능 하여 따로 프로그램을 찾았다.. 여러 프로그램중에 아래의 프로그램을 찾았다. STOMP 를 지원해주고 실제 테스트를 해본결과 성공!! 찾느라 조금 걸렸다. 옛날에는 Chrome 에서 깔수 있었지만 무슨일 때문인지 배포를 중단하였다. 그러므로 local 에 다운받아서 사용! 편리하다 후후 https://apic.app/ apic — The complete API solution The complete API solution APIC provides an end to end solution for APIs, staring from design to documentatio..
오늘의 공부 오늘은 매니저님과 대화를 해본결과 Interface 에 대해 더욱 잘 알게 되었다. Interface 즉 명세서 느낌인것이다. JPA 가 왜 인터페이스로 구현되어 있는가. 어떤 DB 와 연결을 하는지에 따라 바뀔수 있으므로 Interface 로 구현한거다. 우리는 Hibernate 를 구현체로 선택하고 쓰고 있었고 알고는 있었지만 Interface로 왜 구현을 할까 그런 생각을 하였지만 거기서 멈추웠지 더 깊게 생각을 안해보았다. 앞으로 어떻게 공부를 해야하고 어떤식으로 깊게 이해를 해야 하는지 이제 정확하게 알게 되었다. 내일은? 현재 만들고 있는 공부용 프로젝트를 진행하면서 기능구현을 하고 좀더 좋은 코드일순 없을까? 라는 생각으로 계속 코드를 짜봐야겠다..!! 내일도 화이팅!
어떤 문제가 생겼나요? AWS EC2 에 내 local 에서 파일을 업로드 할려고 명령어를 치니 오류가 나왔다. scp ./build/libs/app.jar {호스트 이름}:/home/ubuntu 이런식으로 우분투에 scp 명령어를 통해 올릴려고 했지만 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions for 'F:\\Config\\first1.pem' are too open. It is required that your private key fi..
어떤 문제가 생겼나요? 항해99 에서 준 문제에 요구사항을 보고 문제를 푸는 시간이였다. 요구사항에서 게시글에 댓글을 구현하는 요구사항이 있어서 게시글과 댓글 entity 를 양반향으로 OneToMany 로 구현할려고 하였다. 하지만 어떻게 이런일이... 문제가 생겼다 바로 댓글을 저장하는 순간 에러가 엄청 나오는것이다.. java.lang.StackOverflowError: null 어떤 시도를 하였나요? 처음에는 JWT Filter 부분에서 오류가 나오는줄 알고 그쪽을 찾아보았다. 하지만 아무리 찾아봐도 에러를 발생할만한 상황이라든지 그런점이 하나도 없었다. 결국에는 다시 무슨 에러인지 확인 할려고 천천히 찾아보았다.결국에는 무한 순환이 된다는것만 알고 검색을 하기 시작했다.. 어떻게 해결했나요? 찾..
오늘의 공부 Spring Security와 Filter 부분을 배우고 JWT 를 Security 안쓰고 구현 해보았다. Security : https://domae.tistory.com/90 Filter : https://domae.tistory.com/91 Security 로그인 하는 과정을 필터에서 처리하고 (인증) 권한 주는것을 어디서 하는지 이해를 하였다. (인가) Filter Dispatcherservlet 로 가기전 Filter 부분이 담당하는것을 알고 FIlter 끼리 엮인것을 FilterChain 이라는것을 알게 되었다. 내일은? JPA 에 대해 좀더 자세히 공부 할것 같다.
오늘의 공부 오늘은 Spring Security 와 JWT, Filter 에 대해 배웠다. Spring Security : https://domae.tistory.com/90 JWT : https://domae.tistory.com/89 Filter : https://domae.tistory.com/91 처음에 Sceurity 를 공부하기전 JWT 와 Filter 를 통해 공부를 하였다. JWT Token 검사를 Filter 부분에서 하기위해 코드를 짜보고 그 다음 Security 를 공부하여 사용 하였다. Sceurity 를 사용하기전에는 Filter 부분을 만들어줘야 되므로 너무 귀찮았다. 하지만, Security 에서 지원해주는 기능들을 써보니 너무 편하고 좋은것을 느꼈다. 내일은? 내일은 Rest..
Filter 란? - Filter란 Web 애플리케이션에서 관리되는 영역으로 Client로 부터 오는 요청과 응답에 대해 최초/최종 단계의 위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가할 수 있습니다. - 주로 범용적으로 처리해야 하는 작업들, 예를들어 로깅 및 보안 처리에 활용합니다. - 또한 인증, 인가와 관련된 로직들을 처리할 수도 있습니다. - Filter를 사용하면 인증, 인가와 관련된 로직을 비즈니스 로직과 분리하여 관리할 수 있다는 장점이 있습니다. Filter는 한 개만 존재하는 것이 아니라 이렇게 여러 개가 Chain 형식으로 묶여서 처리될 수 있습니다. * Spring 에서 모든 호출은 DispatcherServlet 을 통과하게 되고 이후에 각 요청을 담당하..