전체 글

전체 글

    [JS] 변수와 상수

    [JS] 변수와 상수

    JavaScript에서 변수와 상수는 var, let, const 가 있다. 이것들을 실습하면서 살펴보자. https://codesandbox.io/ CodeSandbox: Online Code Editor and IDE for Rapid Web Development Optimized for frameworks Custom environments built specifically for React, Vue, Angular, and many more. codesandbox.io 먼저 위 사이트에 들어가서 IDE없이 코드를 작성하여 연습해보자. 우측 상단에 Create Sandbox 버튼을 누른다. 버튼을 누르면 위 사진처럼 여러 언어를 사용할 수 있는데 여기서 Vanilla JS를 선택하자. (중간에 JS..

    시간복잡도 Big-O(빅오)란?

    시간복잡도 Big-O(빅오)란?

    알고리즘이란? 어떤 문제나 목적을 달성하기 위해 거쳐야 하는 여러 과정들을 의미한다. 이 과정들은 다양하고, 상황에 따라 알고리즘은 모두 다르다. 따라서 상황에 맞게 시간 복잡도가 가장 낮은 알고리즘을 선택하여 사용한다. (효율적이고 사용 환경에 최적인 알고리즘을 선택하여 사용한다.) 일반적으로 알고리즘의 성능 분석은 실행에 필요한 공간 측면에서 분석하는 공간 복잡도, 실행 소요시간 측면에서 분석하는 시간 복잡도를 추정하여 평가를 한다. 알고리즘의 실행 시간이란? 알고리즘의 실행 시간은 컴퓨터가 알고리즘 코드를 실행하는 속도에 의존한다. 이 속도는 컴퓨터의 처리속도, 사용된 언어 종류, 컴파일러 속도에 달려있다. 알고리즘의 실행 시간을 두 부분으로 나누면 다음과 같다. 입력값의 크기에 따른 알고리즘의 실..

    스프링에서 파일저장하기

    스프링에서 파일저장하기

    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로 직접 ..