1. Hibernate란
- Boss에서 개발한 ORM(Object Relation Mapping)프레임워크 중 한개입니다.
- ORM이란 객체와 DB 테이블의 매핑을 의미합니다.
- ORM 매핑을 이용하면 객체로 DB 테이블 조작할 수 있습니다.
2. pom.xml
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
...
- Spring Boot 버전 - 2.1.0.RELEASE
- hibernate-core-5.3.7.Final
프로젝트 구조
3. application.yml
spring :
datasource :
url : jdbc:mysql://localhost:3306/db_name
username : (DB User Name)
password : (DB Password)
jpa :
properties :
hibernate :
format_sql:true
show-sql : true
hibernate :
ddl-auto : update
# ddl-auto - @Entity 테이블 정보를 실제 DB에 반영 할건지 설정(create/update/none..)
4. User.java
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 20, nullable = false)
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- @Entity 어노테이션은 해당 클래스가 DB Table과 1:1 매핑이 될 수 있게 합니다.
- @Id - Primery Key 지정
- @GeneratedValue(strategy = GenerationType.IDENTITY) - 기본키 생성을 DB에게 위임합니다.
Mysql에 경우, AUTO_INCREMENT를 사용합니다. - @Column(length = 20, nullable = false) - 테이블 컬럼을 선언합니다. (길이 20, null을 허용하지 않음)
- 위 클래스 생성 후, 서버를 실행 시키면 실제 DB에 해당 테이블에 대한 정보가 반영됩니다.
서버 구동 시 아래와 같이 로그에 user테이블 생성 로그가 남았다면, 실제로 테이블이 생성되었는지 확인
5. UserDao.java 생성
import com.example.bamdule.model.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserDao extends JpaRepository<User, Integer> {
}
6. UserController.java 생성
import com.example.bamdule.dao.UserDao;
import com.example.bamdule.model.entity.User;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping(value = "/save")
@ResponseBody
public List<User> saveUser(User user) {
userDao.save(user);
return userDao.findAll();
}
}
- user save 요청 추가
- "/user/save" 요청 받는 유저를 DB에 저장하고, 유저 리스트를 반환합니다.
- host/{contextPath}/user/save?name=park
브라우저에 위와 같은 응답이 왔으면 하이버네이트가 정상 동작 하는 것입니다.
'IT > Spring' 카테고리의 다른 글
[Spring Boot] 선언적 트랜잭션 @Transactional (0) | 2020.02.04 |
---|---|
[Spring Boot] Hibernate Open Session In View (0) | 2020.02.02 |
[Spring Boot] Swagger 연동 및 설정 방법 (4) | 2020.01.13 |
[Spring Boot] @Valid 어노테이션으로 Parameter 검증하기 (0) | 2020.01.10 |
[Spring Boot] thymeleaf template layout 사용하기 (5) | 2020.01.08 |