로그인 인증 게시 글 목록을 회원만 조회하기 위해서는 접근하는 사용자가 데이터베이스 Member 테이블에 있는 사용자인지 확인을 하는 과정을 거쳐야합니다. 이를 위한 비즈니스 컴포넌트를 만든 후, LoginController을 작성해줍시다. Repository와 Service 인터페이스 및 구현에 대한 코드는 생략하도록 하겠습니다. @SessionAttributes("member") @Controller public class LoginController { @Autowired private MemberService memberService; @GetMapping("/login") public void loginView() { } @PostMapping("/login") public String logi..
Querydsl 웹 애플리케이션에서 SQL은 개발/운용과정에서 수시로 바뀌게 됩니다. 다양한 검색쿼리를 미리 저장해서 사용하면 비슷한 쿼리들이 많아 관리하기가 어렵습니다. 이를 해결하기 위해 마이바티스에서는 동적 쿼리를 제공합니다. JPA에서는 @Query로 쿼리들을 관리하게 되는데 프로젝트를 로딩하는 시점에서 SQL들이 파싱되어 정적 SQL만 사용가능합니다. 따라서 동적쿼리를 이용하기 위해선 Querydsl을 사용해야합니다. Querydsl을 사용하기 위해 querydsl-apt 와 querydsl-jpa를 추가한 후 버전정보를 삭제해주도록 합시다. 버전을 명시할 경우 스프링부트에서 참조하는 querydsl과 명시한 버전이 맞지 않으면 오류가 발생할 수 있습니다.(https://devbelly.tist..
Repository 스프링 데이터 JPA를 테스트하기 위해 새로운 프로젝트를 만든 후 엔티티 클래스를 작성하도록 합시다. 그 다음으로 Repository 인터페이스를 작성해야하는데 비즈니스 클래스에서는 Repository 인터페이스를 이용하여 실질적인 데이터베이스 연동작업을 하게 됩니다. Repository 인터페이스는 스프링에서 제공하는 네 개의 인터페이스중 하나를 선택하여 사용하면 됩니다. 위 세 개는 스프링 데이터 모듈, 아래 JpaRepsitory는 스프링 데이터 JPA에서 제공하는 인터페이스입니다. 인터페이스들은 공통적으로 두 개의 제네릭 타입을 지정하게 됩니다. 첫 번째는 매핑할 엔티티 클래스를 적고 두 번째는 해당 엔티티의 Id 타입을 적게 됩니다. 일반적으로 인터페이스는 구현할 클래스를 작..
영속성 컨텍스트 영속성 컨텍스트는 EntityManager을 생성할 때 같이 생성되는 논리적인 개념입니다. 일종의 엔티티 객체들을 담는 컨테이너라고 이해하면 됩니다. 컨텍스트와 엔티티 사이에 네가지 상태가 있을 수 있습니다. 비영속(new) 엔티티를 생성만 했을 뿐, 아직 영속성 컨텍스트에 저장하지 않은 상태입니다. 영속(managed) EntityManager을 통해 엔티티가 영속성 컨텍스트에 등록된 상태를 의미합니다. 엔티티를 영속 상태로 만들기 위해 persist 메서드를 사용합니다. find를 통해서도 엔티티를 영속 상태로 만들 수 있습니다. 찾고자 하는 엔티티가 영속성 컨텍스트안에 존재하지 않는다면 데이터베이스에 접근해 데이터를 얻어온 후 해당 정보를 토대로 엔티티 객체를 만든 후 영속성 컨텍스..
스프링 부트 로깅 애플리케이션을 운용하며 문제가 발생하면 로그 메세지를 보게 됩니다. 에러가 발생할때 뿐만 아니라 애플리케이션의 성능을 분석하는데에도 쓰는 등 다양한 용도로 사용됩니다. 마켓플레이스에서 ANSI Esacpe in Console을 설치하여 메인함수를 실행하면 로그 레벨별로 색깔이 구분되어 표기됩니다. Level Color 의미 1. ERROR Red 사용자 요청을 처리하는 중 문제 발생 2. WARN Yellow 현재는 처리가능, 향후 문제가능성 존재 3. INFO Green 상태변경과 같은 정보성 메세지 4. DEBUG Green 개발 시 디버깅 목적 5. TRACE Green DEBUG 레벨보다 더 상세한 메세지 로그 레벨은 우선순위가 정해져 있어 특정 로그 레벨을 지정하면 해당 레벨을..
스타터 이해하기 스프링부트는 복잡한 라이브러리 관련 설정을 위해 스타터를 사용합니다. 스타터는 실행에 필요한 라이브러리들을 관련된 것끼리 묶어서 제공합니다. 만일 데이터베이스 연동을 위해 JPA 라이브러리만 다음과 같이 추가했다고 해봅시다. org.hibernate hibernate-entitymanager 5.4.32.Final 하지만 JPA와 연동하기 위해서는 하이버네이트말고도 spring-orm.jar 과 spring-data-jpa.jar와 같은 라이브러리가 추가적으로 필요합니다. 이러한 문제를 해결하기 위해 스프링부트는 관련된 라이브러리를 묶어 스타터로 제공합니다. org.springframework.boot spring-boot-starter-data-jpa POM파일 상속구조 스타터에는 ve..
WebApplicationType 스프링부트는 웹 애플리케이션이나 일반 자바 애플리케이션으로 실행가능합니다. 아무런 설정을 하지 않았을 때는 웹 애플리케이션으로 실행이 되어 내장된 톰캣서버가 실행됩니다. 일반 자바 애플리케이션으로 실행하기 위해서는 SpringApplication의 WebApplicationType을 NONE으로 수정해야합니다. 만일 값이 NONE이 아닌 SERVLET으로 되어있다면 다시 웹 애플리케이션으로 실행됩니다. @SpringBootApplication public class Chapter01Application { public static void main(String[] args) { SpringApplication application = new SpringApplicatio..
- Total
- Today
- Yesterday
- 세그먼트트리
- dijkstra
- kmp
- union find
- string
- Oracle
- Suffix Array
- 동적계획법
- hld
- spring
- knapsack
- 정렬
- implementation
- greedy
- 2-SAT
- 스위핑
- 펜윅트리
- 트라이
- dfs
- spring boot
- 좌표압축
- bfs
- 이분탐색
- sweeping
- Fenwick
- sorting
- SCC
- DP
- 이분매칭
- Segment tree
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |