Spring

    [SpringBoot] 이미지 파일 다운로드

    [SpringBoot] 이미지 파일 다운로드

    https://ssdragon.tistory.com/99?category=1008700 [Spring] 스프링에서 파일저장하기 https://ssdragon.tistory.com/82 [Spring] IntelliJ 파일 업로드 주의사항 @PostMapping("/filetest") public String addImage2(@RequestParam("Photo") MultipartFile uploadFile, HttpServletRequest request).. ssdragon.tistory.com 파일을 저장했으니 다운로드를 만들어보자. 우선 파일을 어떻게 저장했는지 살펴보자. 저번 게시글에서는 파일을 저장하는 것까지 했었는데 여기서 우리는 경로를 알고 있다. 따라서 이름이 중복되지 않게 저장할 파일..

    [스프링시큐리티] Spring Security 5.7 (WebSecurityConfigurerAdapter 에러해결방법)

    [스프링시큐리티] Spring Security 5.7 (WebSecurityConfigurerAdapter 에러해결방법)

    대학교 과제에서 게시판 만들기가 있어서 회원기능을 Spring Security(스프링 시큐리티)를 적용하여 사용했는데 아래와 같은 방법으로 더이상 사용되지 않는다고 표시됐다. 더 이상 WebSecurityConfigurerAdapter 를 상속받아서 스프링 시큐리티를 설정하지 않는다고 나와있다. 그렇다면 공식 홈페이지에서는 뭐라고 나와있는지 살펴보자. 스프링 공식문서 사이트에서 스프링 시큐리티를 검색해서 만드는 방법을 찾아보면 여기는 WebSecurityConfigurerAdapter를 사용하고 있었다. 그래서 다른 공식문서를 찾아보던 와중에 아래 게시글을 발견하였다. WebSecurityConfigurerAdapter가 없는 스프링 시큐리티라는 제목이다. 스프링 시큐리티 5.7.0-M2 버전부터는 We..

    스프링에서 파일저장하기

    스프링에서 파일저장하기

    https://ssdragon.tistory.com/82 [Spring] IntelliJ 파일 업로드 주의사항 @PostMapping("/filetest") public String addImage2(@RequestParam("Photo") MultipartFile uploadFile, HttpServletRequest request) { String fileName = uploadFile.getOriginalFilename(); String filePath =.. ssdragon.tistory.com 최근에 유입된 게시글을 봤을때 파일 업로드 부분을 보셨기에 좀 더 보충하고자 한다. 사용버전 - Spring Boot 2.6.4 - java 1.8 - Tyhmeleaf (뷰템플릿) 파일 업로드 전송 방식..

    Spring Data JPA - 파라미터 바인딩

    Spring Data JPA - 파라미터 바인딩

    스프링 데이터 JPA는 다음 2가지 방법으로 파라미터 바인딩을 지원한다. 위치 기반 이름 기반 SELECT m FROM Member m WHERE m.username = ?0 // 위치 기반 SELECT m FROM Membeer m WHERE m.username = :name // 이름 기반 스프링 데이터 JPA의 기본값으로는 위치 기반 파라미터 바인딩을 지원한다. 이것은 파라미터 순서로 바인딩하는 것이다. 📝 코드 가독성과 유지보수를 위해 위치 기반보다는 이름 기반을 사용하게 된다. 위치 기반은 순서 실수가 있기 때문이다. 위 내용은 공식문서에서도 적혀져 있다. By default, Spring Data JPA uses position-based parameter binding, as describe..

    Spring Data JPA - DTO 직접 조회

    Spring Data JPA - DTO 직접 조회

    조회하는 것은 Entity만 가능 한 것이 아니다!! DTO도 조회가 가능하다. 먼저 아래 코드처럼 @Query를 사용하여 레포지토리 메서드에 쿼리를 정의하자. 위 쿼리를 살펴보면 select에 new study.datajpa.dto.MemberDto가 적혀져 있다. 이것은 패키지 구조를 적어놓은 것인데 아래 MemberDto 클래스의 package 위치를 살펴보자. 그리고 조회하고 싶은 DTO 생성자를 적어야한다. 우리가 조회하려는 것은 Member 와 Member의 Team을 조인한 테이블에서 Member의 id와 username Team의 name을 DTO에 담아서 조회할 것이다. 당연히 조건없이 조회하기에 여러 행을 조회할 수 있으므로 List로 반환한다. DTO로 직접 조회하려면 JPA의 new..

    Spring Data JPA - 쿼리 메서드 기능

    Spring Data JPA - 쿼리 메서드 기능

    스프링 데이터 JPA가 제공하는 쿼리 메서드 기능을 살펴보자. 쿼리 메서드 기능은 여러가지 방법으로 사용할 수 있다. 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 사용해서 Repository Interface에 쿼리 정의 1. 메서드 이름으로 쿼리 생성 Member 엔티티가 있다고 생각할 때, 이름과 나이를 기준으로 회원을 조회하자. 순수 JPA Repository로 구현하면 위와같이 메서드를 만들어서 써야한다. 하지만 저번 블로그글 때 사용했던 스프링데이터JPA를 쓰면 간단해진다. 스프링 데이터 JPA는 메서드 이름을 분석해서 JPQL을 생성하고 실행하기 때문에 스프링 데이터 JPA 공식 문서를 참고해서 사용하자. 😈 주의할 점 이 기능은 엔티티의 필드명이 변..

    Spring Data JPA

    Spring Data JPA

    스프링 데이터 JPA란? 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트이다. 반복되는 CRUD 문제를 편하게 처리해준다. 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 따라서 구현클래스 없이 인터페이스만 작성해도 개발이 된다. 순수 JPA 기반 Repository 를 살펴보자. 순수 JPA 기반 Repository를 써서 데이터 계층에 접근하려면 위와 같이 클래스에 @Repository 를 써야한다. 그러면 컴포넌트 스캔 대상이되서 스프링 빈에 등록을 해주므로 다른 클래스에서 사용할 수 있다. @PersistenceContext로 스프링 컨테이너가 엔티티 매니저를 가져와준다. 엔티티 매니저를 통해 JPA를 사용할 수 있다...

    [Lombok] @NoArgsConstructor, @ToString

    @NoArgsConstructor 보통 클래스를 만들면 아래처럼 디폴트 생성자를 만들 수 있다. public class Member { // 디폴트 생성자 Member() { } } 롬복에서는 @NoArgsConstructor로 디폴트 생성자를 만들 수 있으며 설정까지 가능하다. 사용 방법은 다음과 같다. @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member { // protected Member() {} 가 만들어짐 } @ToString Object 클래스가 가진 메서드 중 toString()이 있다. 이 메서드로 객체가 가지고 있는 정보, 값들을 문자열로 만들어 리턴하는 메서드이다. 우리가 만드는 클래스도 extends로 직접 ..