분류 전체보기 512

프로젝트 시작과 설계

사용 기술 - Spring MVC - Spring Boot - Spring Data JPA - Querydsl IDE - IntelliJ DB - MySQL Template Engine - Thymeleaf UI - BootStrap 점진적으로 기능을 추가시켜나갈 예정 먼저 게시물 CRUD 기능을 완성하고 조회수 기능, 페이징과 정렬을 적용시킬 것이다. 그 다음으로는 로그인/로그아웃, 회원 가입 기능을 추가시켜 로그아웃 상태에서는 게시물을 조회할 수 없도록 설정할 것이다. 또한 게시물을 검색할 수 있는 동적쿼리를 Querydsl을 사용하여 구현해볼 예정 그 이후에 추가할 기능들은 생각중.

Spring MVC의 HiddenMethod 기능 사용하기

기본적으로 HTML Form의 method 속성은 post와 get 방식 밖에 지원하지 않는다. 그렇다면 HTML Form을 사용할 때는 @DeleteMapping을 사용하지 못하는 걸까?? Spring MVC는 HiddenMethod 기능을 통해 HTML Form이 제공하지 않는 delete, put과 같은 메서드를 사용가능하게 해준다. input 타입을 hidden으로 사용자가 원하는 http메서드 방식을 스프링에게 알려주면 스프링 MVC가 내부적으로 이를 사용가능하게 해주는 방식으로 동작한다. 예전에는 @Configuration을 통해 스프링 빈에 등록시켜고 web.xml을 통해 filter를 설정해주어야했지만 최신 스프링부트에서는 application.properties나 yml에 등록해주면 바로..

Spring 2021.06.21

기본 문법

JPQL을 사용하여 회원 이름으로 조회하기 Querydsl을 사용하여 회원 이름으로 조회하기 JPAQueryFactory에 EntityManager 객체를 넣어줌. 훨씬 더 직관성이 있고 알아보기 쉽다. 파라미터 바인딩을 해주지 않아도 알아서 처리해준다. Querydsl은 JPQL 빌더 JPQL: 문자(실행 시점 오류), Querydsl: 코드(컴파일 시점 오류) JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리 EntityManager, JPAQueryFactory 모두 동시성 문제가 발생하지 않게 설계가 되어 있다. 따라서 EntityManager 처럼 JPAQueryFactory도 필드 레벨에서 선언하여 사용하여도 문제없다. 스프링 프레임워크는 여러 쓰레드에서 동시에 같..

Spring/Querydsl 2021.06.18

Querydsl 설정

Querydsl을 사용하기 위해선 build.gradle에 설정을 추가해주어야한다.(start.spring.io에 없음 따로 추가해줘야함) Querydsl이 제대로 설정이 되었는지 확인해보기위해서 엔티티를 만들고 Q엔티티가 생성되는지 테스트 엔티티 작성 후 gradle창을 열어 complieQuerydsl 더블클릭하여 컴파일 실행(그냥 build하여도 자동으로 생성됨) build.gradle에 설정해놓은 build폴더의 generated/querydsl 폴더에 엔티티와 동일한 경로로 Q파일 생성 Q타입은 컴파일 시점에 자동 생성되므로 버전관리(GIT)에 포함하지 않는 것이 좋다. build 폴더는 gitignore파일로 제외시켜놓았기 때문에 Q타입은 포함하지 않는다. 생성된 QHello.java이다. Q..

Spring/Querydsl 2021.06.17

나머지 기능들

1. Specifications (명세) Spring Data JPA는 JPA Criteria를 활용하여 명세의 개념을 사용할 수 있도록 지원(잘 사용하는 기능아님, 참고용) 명세란 도메인에 관한 규칙을 담는 도메인 객체로 객체가 특정 조건을 만족하는지를 판단하는 역할을 담당한다. 나중에 도메인 주도 설계(DDD)책을 한번 읽어보자!! 사용하고자 하는 곳에서 JpaSpecificationExecutor을 상속받아 사용하면 된다. 해당 인터페이스 내부에 들어가보면 findOne, findAll 등등 여러 메서드를 제공하는데 Parameter로 Specification이란 것을 넘긴다. 술어(predicate) 참 또는 거짓으로 평가 AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성(컴포지트 ..

Spring Data JPA 분석

Spring Data JPA 구현체 분석 공통 인터페이스(JpaRepository)의 구현체 ==> org.sprigframework.data.jap.repository.support.SimpleJpaRepository SimpleJpaRepository 클래스 내에 CRUD를 하는 여러 메서드(save, findAll....)등을 구현해놓았다. SimpleJpaRepository는 @Repository 애노테이션이 붙어있는데 여기에는 두가지 의미가 있다. 1. 컴포넌트 스캔의 대상이 되어 스프링이 읽어 컨테이너에 스프링 빈으로 등록 2. JPA(JDBC도 마찬가지)에서 발생한 예외와 같은 영속성 계층의 예외들을 Spring 예외로 바꿔준다. 서비스 계층이나 컨트롤러 계층에 예외를 넘길 때 JPA나 JD..

[백준] 3568번 > iSharp

https://www.acmicpc.net/problem/3568 3568번: iSharp 입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가 www.acmicpc.net 문제 선영이는 C, C++, Java와는 다른 아주 세련된 언어를 만들었다. 선영이는 이 아름답고 예술적인 언어의 이름을 i#으로 정했다. i#은 기본 변수형과 배열([]), 참조(&), 포인터(*)를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 혼합해서 사용할 수 있다. 즉, int의 참조의 참조의 배열의 포인터도 올바른 타입이다. int&&[]* i#은 여러 개의 변수를 한 줄에 정의할 수 있..

[백준] 11058번 > 크리보드

https://www.acmicpc.net/problem/11058 11058번: 크리보드 N = 3인 경우에 A, A, A를 눌러 A 3개를 출력할 수 있다. N = 7인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V를 눌러 9개를 출력할 수 있다. N = 11인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V, Ctrl-A, Ctrl-C, Ctrl www.acmicpc.net 문제 크리보드는 kriii가 만든 신기한 키보드이다. 크리보드에는 버튼이 4개만 있으며, 하는 역할은 다음과 같다. 화면에 A를 출력한다. Ctrl-A: 화면을 전체 선택한다 Ctrl-C: 전체 선택한 내용을 버퍼에 복사한다 Ctrl-V: 버퍼가 비어있지 않은 경..

확장 기능

1. 사용자 정의 Repository 스프링 데이터 JPA가 제공하는 기능을 사용하기 위해 우리는 JpaRepository 인터페이스를 상속받아 사용하고 구현체는 스프링이 자동으로 생성하여 주입시켜준다. 만약 이를 개발자가 직접 구현하려한다면(implements) 구현해야 하는 메서드들이 굉장히 많기 때문에 매우 번거롭고 까다롭다. 아래와 같은 이유로 만약 인터페이스의 메서드를 직접 구현하려한다면? JPA 직접 사용( EntityManager ) 스프링 JDBC Template 사용 MyBatis 사용 Querydsl 사용 데이터베이스 커넥션 직접 사용 등등... 커스텀 메서드를 딱 하나만 구현하고 싶을 때 사용하는 방법이다. 먼저 커스텀 인터페이스를 만들고 그 안에 메서드를 추가한다. 그 뒤에 인터페이..

작업 되돌리기

git add 하지 않은 working tree에 있는 수정된 파일 되돌리기 git checkout -- 파일명 주의할점 : checkout을 하여 되돌린 내용은 다시 복구되지 않아요 ㅠ git add 되어 스테이지에 올라간(스테이징된) 파일을 되돌리기 git reset HEAD git reset HEAD 파일명 HEAD 뒤에 파일명을 지정해주지 않으면 현재 스테이지에 올라가있는 파일 모두를 되돌린다. add하기 전 상태로 돌려준다. 최신 커밋 되돌리기 git reset HEAD^ # 최근 커밋 하나 되돌림 git reset HEAD~3 # 최근 3개 커밋 취소 스테이징과 커밋이 끝난 상태를 커밋을 취소하고 unstage 해준다. git reset 옵션 --soft HEAD^ # 최근 커밋을 하기 전 상..

Git 2021.06.14
반응형