H2데이터베이스
H2 데이터베이스 : 자바로 작성된 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나로, 오픈 소스로 제공되는 소프트웨어입니다. H2 데이터베이스는 메모리 DB로 분류되며, 디스크 기반의 DB와는 달리 주 메모리에 데이터를 저장합니다. 이는 응답 속도가 매우 빠르다는 장점을 가지고 있습니다.
H2 데이터베이스는 사용이 간단하고 가볍기 때문에, 임베디드 시스템에서 많이 사용됩니다. 또한, 많은 양의 데이터를 빠르게 처리해야 하는 애플리케이션에서도 많이 사용됩니다. H2 데이터베이스는 자바 기반으로 작성되어 있기 때문에, 자바 애플리케이션과의 연동이 용이합니다. >또한 H2 데이터베이스는 오픈 소스이기 때문에 무료로 사용할 수 있으며, 다양한 플랫폼에서 사용이 가능합니다. H2 데이터베이스는 ANSI SQL 표준을 준수하고 있기 때문에, 다른 RDBMS와 호환성이 좋습니다.
Mybatis 프레임 워크
MyBatis는 자바 기반 영속성 프레임워크 중 하나입니다. 이는 데이터베이스와 자바 객체 간의 매핑을 쉽게 할 수 있도록 도와줍니다. MyBatis는 JDBC를 대체할 수 있고, SQL 쿼리 및 프로시저와 Java 객체 간의 매핑을 관리합니다.
MyBatis는 간단하고 직관적인 설정을 통해 데이터베이스 연결, SQL 매핑, 캐싱 등 다양한 작업을 처리할 수 있습니다. 이는 SQL 매핑을 XML 또는 어노테이션으로 지정할 수 있으며, 동적 SQL을 생성할 수 있습니다.
MyBatis는 매우 유연하고 확장 가능하며, 대규모 애플리케이션에서 사용하기에 적합합니다. 또한 MyBatis는 오픈 소스로 공개되어 있기 때문에, 누구나 무료로 사용하고 커스터마이징할 수 있습니다.
application.properties
application.properties
는 스프링 부트 애플리케이션의 설정 파일 중 하나입니다. 이 파일을 사용하여 애플리케이션의 환경 구성을 지정할 수 있습니다.
application.properties
파일은key=value
형식으로 작성되며, 다양한 속성을 설정할 수 있습니다. 일부 일반적인 속성은 다음과 같습니다.
server.port
: 애플리케이션의 포트 번호를 지정합니다.spring.datasource.url
: 데이터베이스 연결 URL을 지정합니다.spring.datasource.username
: 데이터베이스 사용자 이름을 지정합니다.spring.datasource.password
: 데이터베이스 비밀번호를 지정합니다.spring.jpa.show-sql
: JPA 쿼리를 로그에 표시할지 여부를 지정합니다.spring.jpa.hibernate.ddl-auto
: Hibernate가 데이터베이스 테이블을 생성하도록 지정합니다.
application.properties
파일을 사용하여 애플리케이션을 구성하면, 코드 내에서 하드코딩된 구성값을 피할 수 있습니다. 대신에, 애플리케이션 구성값을 쉽게 수정할 수 있으며, 구성값을 외부에서 가져오거나 커스터마이즈할 수 있습니다.
application.yml
application.yml
은 스프링 부트 애플리케이션의 설정 파일 중 하나입니다.application.properties
파일과 마찬가지로,application.yml
파일을 사용하여 애플리케이션의 환경 구성을 지정할 수 있습니다.
application.yml
파일은 YAML 형식으로 작성되며, 들여쓰기와 들여쓰기 수준을 사용하여 계층 구조를 표현합니다. 일부 일반적인 속성은 다음과 같습니다.
server.port
: 애플리케이션의 포트 번호를 지정합니다.spring.datasource.url
: 데이터베이스 연결 URL을 지정합니다.spring.datasource.username
: 데이터베이스 사용자 이름을 지정합니다.spring.datasource.password
: 데이터베이스 비밀번호를 지정합니다.spring.jpa.show-sql
: JPA 쿼리를 로그에 표시할지 여부를 지정합니다.spring.jpa.hibernate.ddl-auto
: Hibernate가 데이터베이스 테이블을 생성하도록 지정합니다.
application.yml
파일은application.properties
파일보다 더 가독성이 좋고 계층 구조를 더 잘 나타내므로, 더 복잡한 구성값을 다룰 때 유용합니다.application.yml
파일도application.properties
파일과 마찬가지로 애플리케이션을 구성하는 데 사용됩니다.
@RequestMapping
@RequestMapping
은 스프링 프레임워크에서 컨트롤러 클래스 또는 메서드에 요청 매핑 정보를 제공하는 어노테이션입니다. 이 어노테이션을 사용하여 HTTP 요청에 대한 처리를 정의할 수 있습니다.
@RequestMapping
은 다양한 매개변수를 허용합니다. 가장 일반적인 매개변수는value
와method
입니다.value
매개변수는 요청 URL과 매핑될 값을 지정합니다.method
매개변수는 요청 방법(HTTP 메서드)을 지정합니다.@RequestMapping(value = "/users/{id}", method = RequestMethod.GET) public User getUser(@PathVariable("id") Long id) { // ... }
위의 예제는
/users/{id}
URL과 GET 요청에 대한 요청 매핑 정보를 제공합니다.{id}
는 경로 변수를 나타내며,@PathVariable
어노테이션을 사용하여 이 변수에 대한 값을 수신할 수 있습니다. 이 메서드는User
객체를 반환하며, 이 객체는 HTTP 응답으로 직렬화됩니다.
@RequestMapping
어노테이션은 다양한 매개변수와 함께 사용하여 다양한 유형의 요청 매핑을 정의할 수 있습니다. 이러한 유형에는 HTTP 요청 헤더, 요청 매개변수, 요청 본문, Accept 헤더 등이 포함됩니다.
@RequestParam
@RequestParam
은 스프링 프레임워크에서 HTTP 요청 매개변수를 메서드 매개변수와 연결하는 데 사용되는 어노테이션입니다. HTTP 요청 매개변수는 HTTP 요청 URL에 포함되는 쿼리 매개변수(query parameter) 또는 폼 데이터(form data)로 제공됩니다.
@RequestParam
어노테이션을 사용하여 매개변수를 지정할 수 있습니다.value
매개변수를 사용하여 요청 매개변수의 이름을 지정할 수 있으며,required
매개변수를 사용하여 매개변수가 필수인지 여부를 지정할 수 있습니다.defaultValue
매개변수를 사용하여 매개변수의 기본값을 지정할 수도 있습니다.@RequestMapping("/hello") public String hello(@RequestParam("name") String name) { return "Hello, " + name; }
위의 예제는
/hello
요청에 대한 처리기 메서드를 보여줍니다.name
매개변수는 요청 매개변수와 연결되며,@RequestParam
어노테이션을 사용하여 지정됩니다. 이 메서드는name
매개변수를 사용하여Hello, {name}
문자열을 반환합니다.
@RequestParam
어노테이션을 사용하여 요청 매개변수를 메서드 매개변수와 연결할 수 있습니다. 이를 통해 스프링 MVC가 HTTP 요청 매개변수를 자동으로 파싱하고 메서드 매개변수에 할당할 수 있습니다.
@PathVariable
@PathVariable
은 스프링 프레임워크에서 경로 변수(path variable)를 메서드 매개변수와 연결하는 데 사용되는 어노테이션입니다. 경로 변수는 URI의 일부로 포함되는 변수를 의미합니다.
예를 들어, 다음과 같은 요청이 있다고 가정해보겠습니다.
GET /users/123
위 요청은 /users/{id}
경로를 사용합니다. 이 경로는 {id}
경로 변수를 포함하며, 이 변수는 요청에서 실제 값으로 대체됩니다. 이 경우 {id}
는 123
로 대체됩니다.
@PathVariable
어노테이션을 사용하여 요청 매개변수를 메서드 매개변수와 연결할 수 있습니다. value
매개변수를 사용하여 경로 변수의 이름을 지정할 수 있습니다.
@GetMapping("/users/{id}")
public String getUser(@PathVariable("id") Long userId) {
// ...
}
위의 예제는 /users/{id}
요청에 대한 처리기 메서드를 보여줍니다. id
매개변수는 경로 변수와 연결되며, @PathVariable
어노테이션을 사용하여 지정됩니다. 이 메서드는 id
매개변수를 사용하여 해당 사용자를 반환합니다.
@PathVariable
어노테이션을 사용하여 경로 변수를 메서드 매개변수와 연결할 수 있습니다. 이를 통해 스프링 MVC가 경로 변수를 자동으로 파싱하고 메서드 매개변수에 할당할 수 있습니다.
@ModelAttribute
@ModelAttribute
어노테이션은 스프링 프레임워크에서 요청 매개변수를 모델 객체에 바인딩하는 데 사용됩니다. 즉, 요청 매개변수를 객체의 필드에 매핑하여 객체를 생성하고 초기화합니다.
@ModelAttribute
어노테이션은 다음과 같은 경우에 사용됩니다.
1. GET 요청에서 모델 객체를 초기화하는 데 사용됩니다.
2. POST 요청에서 모델 객체를 바인딩하는 데 사용됩니다.@GetMapping("/user") public String getUser(@ModelAttribute("user") User user) { return "userForm"; } @PostMapping("/user") public String saveUser(@ModelAttribute("user") User user) { userService.save(user); return "redirect:/user/" + user.getId(); }
위의 예제는
/user
요청에 대한 처리기 메서드를 보여줍니다. GET 요청의 경우,@ModelAttribute
어노테이션을 사용하여User
객체를 초기화합니다. 이 객체는userForm
뷰에 전달됩니다. POST 요청의 경우,@ModelAttribute
어노테이션을 사용하여 요청 매개변수를User
객체와 바인딩합니다. 그런 다음,UserService
를 사용하여 사용자를 저장하고, 사용자 ID로 리다이렉트합니다.
@ModelAttribute
어노테이션을 사용하여 모델 객체를 생성하고 초기화할 수 있습니다. 이를 통해 스프링 MVC가 요청 매개변수를 객체에 바인딩하고 필드를 설정할 수 있습니다.
@RequestBody
@RequestBody
어노테이션은 스프링 프레임워크에서 요청 본문(request body)을 자바 객체로 변환하는 데 사용됩니다. 즉, 요청 본문을 객체로 매핑하여 처리합니다.
보통@RequestBody
어노테이션은 POST, PUT 또는 PATCH 요청과 함께 사용됩니다. 요청 본문은 JSON, XML 또는 다른 형식의 데이터일 수 있습니다.@PostMapping("/user") public ResponseEntity<User> createUser(@RequestBody User user) { userService.createUser(user); return new ResponseEntity<>(user, HttpStatus.CREATED); }
위의 예제는
/user
요청에 대한 처리기 메서드를 보여줍니다. 이 메서드는@RequestBody
어노테이션을 사용하여 요청 본문을User
객체로 변환합니다. 그런 다음UserService
를 사용하여 사용자를 생성하고, 생성된 사용자와 함께HttpStatus.CREATED
상태 코드를 반환합니다.
@RequestBody
어노테이션을 사용하여 요청 본문을 객체로 변환할 수 있습니다. 이를 통해 스프링 MVC가 요청 본문을 자동으로 파싱하고 자바 객체에 바인딩할 수 있습니다.@ResponseBody
@ResponseBody
어노테이션은 스프링 프레임워크에서 컨트롤러 메서드가 생성하는 응답을 HTTP 응답 본문(response body)으로 직접 전송하는 데 사용됩니다. 즉, 메서드가 생성하는 데이터를 HTTP 응답 본문에 직접 쓰게 됩니다.@GetMapping("/user/{id}") @ResponseBody public User getUser(@PathVariable Long id) { User user = userService.getUser(id); return user; }
위의 예제는
/user/{id}
요청에 대한 처리기 메서드를 보여줍니다. 이 메서드는@ResponseBody
어노테이션을 사용하여User
객체를 직접 HTTP 응답 본문에 씁니다. 그러면 스프링 MVC는 이 객체를 JSON 또는 XML로 변환하여 응답 본문으로 반환합니다.
@ResponseBody
어노테이션을 사용하여 컨트롤러 메서드가 생성하는 데이터를 HTTP 응답 본문으로 직접 전송할 수 있습니다. 이를 통해 스프링 MVC가 객체를 자동으로 JSON 또는 XML로 변환하여 응답 본문으로 반환할 수 있습니다.