백엔드
-
[Spring Security} Spring 3.x에서 mockMvc 테스트 하는 법백엔드/Spring 2021. 1. 15. 09:04
🚀 들어가며... MockMVC를 사용하면 테스트 케이스를 보다 다양하게 구성할 수 있는데, 사내의 자바와 서블릿은 spring 3.x에 가능했다. 하지만 Spring security Test는 spring 4.x에서 동작하기 때문에 생기는 문제점... 📑 내용 stack over flow의 일부 내용 Update: 4.0.0.RC2 works for spring-security 3.x. For spring-security 4 spring-security-test become part of spring-security (http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test, version is the same). ..
-
[Spring JPA] 객체의 상태에 대해서 알아보자 (Transient, Persistent, Detached)백엔드/Spring 2021. 1. 12. 23:47
🚀 들어가며... 과거 JPA를 통해서 블로그를 개발해보겠다며, 열심히 카카오톡 oAuth2.0 로그인 기능을 붙이며 개발했던 기억이 있다. 그러면서 저장한 객체를 재사용하였는데, 재사용과 동시에 update가 되는 경우가 있었다. 당시 JPA에 대한 이해가 부족했기에, 이제라도 남기는 글 (현재 아직 많이 부족하지만, 이제는 많이 달라진 것 같다) 📑 내용 우선 설명부터 해야겠다. JPA의 객체 상태(Object status)의 경우 세가지가 존재한다. 1. Transient (과도기) 말 그대로 투명한 상태를 뜻한다. 알기 쉽게 설명하자면, 객체 저장 이전의 상태를 뜻하여, 데이터베이스나 EM(entityManager)가 관리하지 않는 상태이다. ID 값이 존재하지 않으며, 하이버네이트가 save()..
-
[Spring JPA] 검색 쿼리 개발백엔드/Spring 2021. 1. 2. 03:43
🚀 들어가며... 검색의 경우 총 네가지를 구상했습니다. 단순 키워드 검색 (좋아요 내림차순) 단순 키워드 검색 (좋아요 오름차순) 페이지 반환, 키워드 검색 (좋아요 내림차순) 페이지 반환, 키워드 검색 (좋아요 오름차순) 좋아요 컬럼의 변수 이름은 likeCount로 하였습니다 like는 데이터베이스 예약어이기 때문에 안됩니다. 테스트 케이스는 assertThat()을 사용하여 진행하였습니다. 💌 소스코드 도메인 클래스 (Comment) package org.rojae.examples; import org.springframework.lang.NonNull; import javax.persistence.*; @Entity public class Comment { @Id @GeneratedValue p..
-
[Spring JPA] 검색 쿼리 - 대소문자 무시하기백엔드/Spring 2021. 1. 2. 02:48
🚀 들어가며... 커뮤니티 게시판에서 검색 기능을 개발할때, 대소문자에 구분 없이 사용하도록 해야한다. 💌 소스코드 package org.rojae.examples; import java.util.List; public interface CommentRepository extends MyRepository{ // IgnoreCase를 추가 ~> keyword의 문자를 대문자로 바꾸어 준다 List findByCommentContainsIgnoreCase(String keyword); } 위의 코드를 사용하여 (IgnoreCase를 추가한) 하이버네이트가 생성한 쿼리를 확인해보면 upper()를 통해서 무조건 대문자로 검색하는 것을 알 수 있다. (사용한 데이터베이스는 postgres) 이를 통해서 대소문..
-
[Spring JPA] Hibernate 파라미터 출력 설정 (로그 출력)백엔드/Spring 2020. 12. 29. 20:27
로재의 개발 일기 Hibernate SQL 데이터 출력 기억하기 귀찮으면서, 매번 까먹는 하이버네이트의 로그 출력을 기록하겠습니다. 로그 출력 123456# hibernate logging infospring.jpa.show-sql=truespring.jpa.properties.hibernate.format_sql=true Colored by Color Scriptercs위에 처럼 로그 정보를 설정하면아래 처럼 로그 정보가 이쁘게 설정된다. 하지만, 파라미터 바인딩의 출력은아직되지 않았다. 파라미터 바인딩 출력 12345 # show sql data bindinglogging.level.org.hibernate.SQL = debuglogging.level.org.hibernate.type.descript..
-
[Spring Framework] 한글 인코딩이 깨질때 (Spring Security 사용시)백엔드/Spring 2020. 12. 2. 23:20
로재의 개발 일기 스프링에서 한글 인코딩 주로 폼의 데이터 전송 기법으로는 Get과 Post가 있다. Get의 경우 Tomcat의 server.xml를 수정해주면 되는 것이고Post의 경우 web.xml를 수정해주면 되는 것인데 어떠한 이유에서인지, web.xml에서 설정한 필터링이직접 디코딩, 인코딩, 이클립스 소스파일 인코딩 문제 등등...-> 난리를 쳐도 한글이 정상적으로 출력되지 않는 것이다. 분명 비슷한 경험의 개발자들이 많을 것이고스스로도 기억하고자 남기는 글.. Encoding For Get Tomcat의 server.xml에서 다음을 수정해준다.cs이 부분에 URIEncoding를 추가시켜주어, 아래와 같이 만들어준다. cs 사실 이 부분은 딱히 손 볼게 없다. Encoding For Po..
-
[Spring Framework] MVC(모델-뷰-컨트롤러) 패턴에 대해서 알아보자백엔드/Spring 2020. 11. 16. 23:43
로재의 개발 일기 MVC 패턴 스프링에서 가장 쉽고, 가장 어려운 MVC이다. MVC 개념 모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 아키텍처 패턴으로 MVC 패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위함이다. Model : 어플리케이션의 정보 (데이터, 비즈니스 로직 포함) => Service, DAO, RepositoryView : 사용자에게 제공할 화면 (Presentation Layer) => HTML, JSONController : Model과 View 사이의 상호 작용을 관리 Model Component 데이터 저장소와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 한다.여러 개의 데이터 변경 작업 (추가, 변경..