1. H2 Database1) 다운로드https://www.h2database.com/html/main.html2) 설치압축을 해제하면 h2라는 디렉토리가 생성되고bin 폴더안의 h2.sh라는 스크립트가 있습니다.먼저 다음 명령어를 통해 권한을 부여합니다.chmod 755 h2.sh그리고 실행합니다../h2.sh3) 확인다음과 같이 웹 콘솔이 실행됩니다.2. spring1) 의존성 설치dependencies에 다음 2개를 넣어주고 refresh 해줍니다. // java에서 DB에 붙으려면 JDBC 드라이버가 꼭 있어야합니다. spring-data-jpa에 내장되어 있습니다. // 정말 붙었는지 테스트 하기 위해 JPA를 넣어줍니다. implementation 'org.springframe..
스프링시큐리티(Spring Security)란? 스프링 시큐리티는 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크입니다. 즉 인증(Authenticate, 누구인지?) 과 인가(Authorize, 어떤것을 할 수 있는지?)를 담당하는 프레임워크를 말합니다. 스프링 시큐리티에서는 주로 서블릿 필터(filter)와 이들로 구성된 필터체인으로의 구성된 위임모델을 사용합니다. 그리고 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있습니다. 기본용어 접근 주체(Principal) : 보호된 리소스에 접근하는 대상 인증(Authentication) : 보호된 리소스에 접근한 대상에 대해 누..
@Transactional 이란?@Transactional은 Spring에서 트랜잭션을 관리하기 위한 애너테이션입니다.이 애너테이션을 사용하면 데이터베이스 작업을 하나의 논리적인 단위로 묶어서 처리할 수 있습니다.즉, 여러 개의 SQL 쿼리가 모두 성공해야만 커밋(commit) 되고, 하나라도 실패하면 롤백(rollback) 됩니다.@Transactional 사용 예제import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;@Servicepublic class AccountService { private final AccountRepository accountR..
JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다.JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다.# Persistence Framework란?영속성(Persistence)은 프로그램이 종료되어도 데이터가 사라지지 않는 특성을 뜻한다.[그림 1]에서 보이는 Persistence 계층이 Domain Model 계층에 영속성을 부여하는 역할을 한다.자바에서는 JDBC를 통해 영속성을 부여할 수 있다.하지만 JDBC는 중복된 코드를 반복적으로 사용하거나 Connection과 같은 공유 자원 관리가 까다로운 등 여러가지 단..
스프링 이전의 Bean 관리 방법Spring이 등장하기 전, Java 애플리케이션에서 객체(Bean) 관리는 개발자가 직접 수행해야 했습니다.대표적인 방식으로는 1) new 키워드를 이용한 수동 객체 생성, 2) Factory 패턴을 이용한 객체 관리 를 활용한 객체 관리 등이 있었습니다.1. new 키워드를 이용한 객체 생성 (수동 관리)가장 기본적인 방식은 개발자가 직접 객체를 생성하고 관리하는 것이었습니다.예제: 전통적인 객체 생성 방식public class UserService { private UserRepository userRepository; public UserService() { this.userRepository = new UserRepository(); // ..
Spring Mvc@Controllerspring의 controller를 의미한다controller를 사용하면 @RequestMapping등의 추가적인 어노테이션을 사용할 수 있게 된다.@RestController@Controller + @ResponseBodycontroller중 view로 응답하지 않는 컨트롤러를 의미한다. ( View가 아닌 객체 자체를 반환)HttpResponse로 바로 응답이 가능하다. (@ResponseBody의 역할을 자동적으로 해줌)@RequestMappinghttp request 라우팅 어노테이션. 요청 형식을 정의하지 않으면 default는 GET이다.@RequestMapping은 Class와 Method에 붙일 수 있고, @GetMapping, @PostMapping..
QueryDsl이란?QueryDSL은 타입 안전한(Typed-safe) SQL 및 JPQL 쿼리를 생성할 수 있는 Java 기반의 쿼리 빌더 프레임워크입니다.Spring Data JPA와 함께 사용되며, JPQL을 코드로 작성할 수 있어 가독성과 유지보수성이 뛰어나고, 컴파일 타임에서 문법 오류를 잡을 수 있는 장점이 있습니다.왜 사용하나?실제로 Query를 사람이 짜다보면 수많은 쿼리를 수작업으로 생성해야한다. 사람이 짜다보면 Query는 컴파일 단계에서 오류가 있는지 알 수가 없다(String으로 처리되기 때문이다) Query 생성을 자동화 하여, 자바 코드로 작성할 수 있다. 그 외 기타 이득이 많다. QueryDSL vs JPQL vs Criteria vs Native Query비교 항목Query..
Spring 참고 사이트Spring Boot Reference DocumentationSpring 관련 포스팅 목록1. Spring Framework2. Spring MVC3. Spring Boot4. Spring MVC vs Struts25. Spring Framework vs Spring MVC6. Spring MVC vs 스프링 부트(Spring Boot)1. 스프링(Spring)이란?1.1 스프링의 개념Spring은 Java를 기반으로 한 웹 어플리케이션 프레임워크다. spring.io 사이트에서 확인하면 '스프링 프레임워크는 현대 자바 기반의 엔터프라이즈 어플리케이션을 위한 프로그래밍 및 Configuration Model 제공한다'라고 언급하고 있다. 스프링은 위와 같은 구조를 가지고 있으며,..