분류 전체보기 (80) 썸네일형 리스트형 [MySQL] 클러스터링 인덱스, 넌클러스터링 인덱스 시작하기에 앞서 여기서 말하는 클러스터(Cluster)>란 무엇일까? 클러스터란, 간단하게 여러 개를 하나로 묶는다는 것을 뜻한다. 인덱스에서의 클러스터링은 값이 비슷한 것들을 묶어서 저장하는 형태로 구현되는데, 비슷한 값들을 동시에 조회하는 케이스가 많다라는 부분에서 착안되었다. MySQL에서는 InnoDB와 TokuDB 스토리지 엔진에서만 지원하고 나머지에서는 지원하지 않는다. 클러스터링 인덱스, 넌클러스터링 인덱스 그렇다면 클러스터링 인덱스(Clustering Index)는 무엇일까? 클러스터링 인덱스는 테이블의 기본 키(Primary Key)에 대해서만 적용되는 내용이다. 이는 기본 키값이 비슷한 레코드끼리 묶어서 저장하는 것을 의미하며 기본 키값에 의해 레코드의 저장 위치가 결정되고 기본 키.. [Security] Spring Security Filters Spring Security Filter 웹 애플리케이션은 Tomcat 서블릿 컨테이너에 의해 구동이 된다. Tomcat 서블릿 컨테이너는 서블릿들을 관리해주는 역할을 하고 서블릿은 클라이언트의 요청을 처리하고 결과를 반환할 수 있도록 서블릿 클래스의 구현 규칙을 지켜 만드는 자바 웹 프로그래밍 기술이다. 서블릿에는 우리가 Spring MVC에서 사용되는 Front Controller인 DispatcherServlet이 존재하여 요청 URL에 대한 처리를 해준다. 또한, 서블릿에는 네트워크 통신의 사이 사이에서 여러 동작을 행하게 할 수 있는 클래스인 Filter가 존재한다. 이 필터들 중 DelegatingFilterProxy라는 것이 존재하고 서블릿 필터 처리를 스프링에 들어있는 빈으로 위임하고 싶을.. [Security] Authorization(Security Form Login 구현) 시작하기에 앞서 우리는 이전에 사용자의 인증(Authentication)에 대해서 다뤘었다. 이번에는 사용자의 인가(Authorization)에 대해 다뤄보려고 한다. 인가란 무엇일까? 우리는 Authentication에 Principal, Credentials뿐만 아니라 Authorities를 설정해줄 수 있었다. Principal과 Credentials는 인증하려는 사용자의 ID, PW 정보를 담고 있으며 Authorities는 권한 정보를 담고 있다. 우리는 권한 정보를 활용해 해당 사용자가 해당 URL에 접근할 권한이 있는지 확인하는 것이다. 이를 처리하는 필터에 대해서 살펴보자. FilterSecurityInterceptor 인가(Authorization)을 처리하는 필터는 바로 FilterSe.. [Security] Authentication(Security Form Login 구현) 이번 포스트는 저번에 다뤘던 Security Form Login에 대해서 직접 구현해보려고 한다. 현재, API 방식이 많이이뤄지고있지만 Form 로그인 방식도 충분히 많이 이뤄지고 있어 해보려고한다. 이 예제는 어떤 회원에 대한 로그인을 기준으로 진행해보려고 한다. 이 회원은 아이디, 비밀번호, 권한 총 세 가지를 가지고 있으며 회원가입 할 때 설정할 수 있다. 권한은 일반(USER), 관리자(ADMIN)으로 이루어져 있으며 관리자만 들어갈 수 있는 URL, 관리자와 일반 회원 모두 들어갈 수 있는 URL이 존재한다. /register : 회원가입 /login : 로그인 /logout : 로그아웃 /main : 메인 페이지(로그인 후 이용가능) /user : 일반(USER) 회원, 관리자(ADMIN) .. [Security] Spring Security란 오늘은 Spring에서 제공하는 프레임워크 중 보안 프레임워크인 Security에 대해서 다뤄보려고한다. 이번 포스트에서는 Form Login에 관해 다뤄보려고한다. 먼저 들어가기에 앞서 Spring Security에 대해 간단하게 알아보자. 우리는 대부분의 시스템에서 회원의 정보를 관리한다. (아이디, 비밀번호) 예를 들어, 로그인을 진행할 때 해당 아이디가 우리 회원이 맞고 본인이 맞는지 혹은 해당 회원이 어떤 부분에 대해 접근할 권한이 있는지를 확인하는 등의 경우이다. Spring Security에서는 위에서 설명한 부분을 제공한다! 인증(Authorizatoin) : 우리 회원이 맞고 본인이 맞는지 인가(Authentication) : 접근할 권한이 있는지 Security는 기본적으로 인증 절차를.. [JPA] 다대다(N:M) 관계 매핑, 좋아요 기능 구현 시작하기에 앞서 두 테이블끼리 연관 관계를 맺을 때, 다양한 연관 관계를 가진다. 이는 일대다(1:N), 다대일(N:1), 일대일(1:1), 다대다(N:N)으로 이루어져있다. 일대다와 다대일 같은 경우 서로 관계를 맺기 위해 한 쪽 테이블에서 하나의 외래키를 가져 연관 관계를 관리한다. (테이블에서는 다(N)쪽에서 외래키를 관리하고 JPA에서는 다(N)쪽에서 관리하는 것을 지향한다.) 일대일 같은 경우에서도 일대다와 다대일과 비슷하게 한 쪽 테이블에서 하나의 외래키를 관리하면 된다. 하지만, 위와 같이 어느 한쪽에서 꼭 관리해야될 필요는 없고 둘 중 한 곳에서만 관리하면 된다. 보통, 서버 개발자의 경우 참조의 용이성 등 같은 이유로 주 테이블에 외래키를 두는 것을 선호한다. 하지만, DBA의 경우 외래.. [JPA] 일반 조인 vs 패치 조인 시작하기에 앞서 이번 포스트에서는 일반 조인과 패치 조인의 차이점에 대해서 알아보려고 한다. 우리가 엔티티들을 생성하고 사용하다보면, 자연스럽게 다양한 연관 관계가 맺어진다. 우리는 맺어진 연관 관계 속에서 다양한 정보를 찾으려고 노력하는데, 우리는 이 때 조인을 사용하곤한다. JPA에서는 특별한 조인인 패치 조인을 제공하는데 이 부분은 과연 조인과 어떤 차이점이 존재하는 것일까? 간단한 예제를 통해서 이 부분에 대해서 자세히 알아보자. 엔티티 이 부분에 대해서 알아보기 위해 사용한 예제는 다음과 같다. 게시글을 작성할 수 있는 학생이 존재한다. 한 학생은 여러 개의 게시글을 작성할 수 있고, 한 게시글은 한 작성자에 의해 소유된다. 학생과 게시글은 위와 같은 속성을 가진다. 이 부분에 대한 엔티티 코드.. [Querydsl] Querydsl 기본적인 사용 및 게시물 동적 검색 구현 Querydsl란 오늘은 Querydsl에 대한 포스트를 다뤄보려고한다. 우리는 이전에 Spring Data JPA를 활용하여 다양한 부분에 대한 쿼리를 다뤘다. 특히, 강력한 @Query의 기능으로 기존의 JPA를 더 효율적으로 다룰 수 있었다. 하지만 해당 부분으로 모든 부분의 조회 기능을 사용하기에는 한계가 있다. 사용해본 사람들은 알겠지만, 동적인 쿼리를 다루는 부분에 대해서 어려움을 느낄 것이다. 예를 들자면 어떤 게시물을 조회하는데 검색 조건이 달라지는 등의 부분 등을 살펴볼 수 있을 것이다. 그래서 사용하게 된 것이 바로 Querydsl이라는 프레임워크이다. 이것은 HQL(Hibernate Query Language) 쿼리를 타입에 안전하게 생성 및 관리할 수 있게 해주는 프레임워크이다. 이.. 이전 1 2 3 4 5 6 7 8 ··· 10 다음