Java Persistence API (JPA)와 Hibernate
- 데이터베이스와 자바 객체 간의 상호 작용을 관리하고 객체 지향 프로그래밍과 관계형 데이터베이스 간의 매핑을 위한 기술
- Hibernate는 JPA의 구현체 중 하나
spring.jpa.hibernate.ddl-auto=update
update / create/ create-drop
update일 경우에는 행 drop이 안됨
create는 없으면 create하고 시작
mtest.html은 모달창 테스트용 선생님 제공 파일
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Modal</title>
<style>
#modal {
position: relative;
width: 100%;
height: 100%;
z-index: 1;
}
#modal h2 {
margin: 0;
}
#modal button {
display: inline-block;
width: 100px;
margin-left: calc(100% - 100px - 10px);
}
#modal .modal_content {
width: 300px;
margin: 100px auto;
padding: 20px 10px;
background: #fff;
border: 2px solid #666;
}
#modal .modal_layer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: -1;
}
</style>
</head>
<body>
<div id="root">
<button type="button" id="modal_opne_btn">모달 창 열기</button>
</div>
<div id="modal">
<div class="modal_content">
<h2>모달 창</h2>
<p>모달 창 입니다.</p>
<button type="button" id="modal_close_btn">모달 창 닫기</button>
</div>
<div class="modal_layer"></div>
</div>
<script>
document.getElementById("modal_opne_btn").onclick = function() {
document.getElementById("modal").style.display="block";
}
document.getElementById("modal_close_btn").onclick = function() {
document.getElementById("modal").style.display="none";
}
</script>
</body>
</html>
MyData.java
package com.study.springboot.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Entity //테이블을 의미함
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class MyData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 오토 인크리먼트로 만들어줌
private Long id; // 위의 어노테이션 두 개는 얘와 관련있음
private String memo;
//private String testUp;
//private String numContent; // 카멜표기하면 중간에 _로 이어짐
} //자동으로 이 이름으로 테이블이 만들어짐
MyDataRepository.java
package com.study.springboot.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.study.springboot.entity.MyData;
@Repository
public interface MyDataRepository extends JpaRepository<MyData, Long> {
}
Jpa0215ApplicationTests.java
package com.study.springboot;
import java.util.List;
import java.util.Optional;
import java.util.stream.IntStream;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.study.springboot.entity.MyData;
import com.study.springboot.repository.MyDataRepository;
import lombok.extern.log4j.Log4j2;
@SpringBootTest
@Log4j2
class Jpa0215ApplicationTests {
@Autowired
MyDataRepository myDataRepository;
@Test
void contextLoads() {
}
@Test
@Disabled
public void insertTest() {
IntStream.rangeClosed(1, 10).forEach(t -> {
// 인서트 구문
MyData myData = MyData.builder().memo("테스트" + t).build();
log.info(myData);
myDataRepository.save(myData);
});
// MyData myData = new MyData();
}
@Test
@Disabled
public void selectAllTest() {
List<MyData> list = myDataRepository.findAll();
list.stream().forEach(i->{log.info(i.getMemo());});
}
@Test
@Disabled
public void updateTest() {
//빌드업 패턴을 이용해서 객체 생성, new로 만들어도 되긴 함
MyData myData = MyData.builder().id(10L).memo("연습").build();
log.info(myDataRepository.save(myData));
}
@Test
@Disabled
public void deleteTest() {
myDataRepository.deleteById(6L);
}
@Test
public void selectOneTest() {
//MyData myData = myDataRepository.getOne(10L);
MyData none = MyData.builder().memo("없음").build();
Optional<MyData> myData = myDataRepository.findById(34L);
//optional은 null처리 메소드를 장착, but 불편함
log.info(myData.orElse(none).getMemo());
}
}
'국비지원 > 백엔드' 카테고리의 다른 글
230307 JPA -EntityManager, Persistence Context (0) | 2023.03.07 |
---|---|
230220 JPA - mappedBy 사용 (0) | 2023.02.20 |
230213 H2 Database 이용 (0) | 2023.02.13 |
230209 Thymeleaf + Bootstrap (0) | 2023.02.09 |
230207 Spring - JUnit Test (0) | 2023.02.07 |