[明日の学習キャンプ]#211118💻 TIL 💻
5036 ワード
📚 SpringBoot
📌 JPAの永続コンテキスト
✔持続性コンテキストは何ですか?
✔持続性コンテキストの存在原因
entityManager.永続化(エンティティ)は、永続性コンテキストのメインキャッシュに格納されます.
(DBを保存しない)コミットすると、永続性コンテキストの情報がクエリーとしてDBに送信されます
クエリーがプライマリ・キャッシュにない場合は、DBで直接クエリーし、プライマリ・キャッシュに保存して戻ります.存在する場合は、メインキャッシュに存在する対応するエンティティをすぐに返します.
📌 掲示板記事の保存(ajaxの再使用)
function writeAticle() {
$.ajax({
type: "POST",
url: "/article",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({content: $("#content").val()}),
success: function (response) {
$("#content").val('');
if(confirm("저장된 메시지를 확인하시겠어요?")) {
readAticle(response['id'])
}
}
})
}
function readAticle(id) {
$.ajax({
type: "GET",
url: `/article/${id}`,
success: function (response) {
console.log(response['content']);
$("#acticle").html(response['content']);
//article 태그의 내용을 가져와서 바꿈
}
})
}
package com.sparta.springtest.controller;
import com.sparta.springtest.domain.entity.Board;
import com.sparta.springtest.dto.BoardDto;
import com.sparta.springtest.repository.BoardRepository;
import com.sparta.springtest.service.BoardService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RequiredArgsConstructor
@RestController
public class Boardcontroller {
private final BoardService boardService;
@PostMapping("/article")
public Board setBoard(@RequestBody BoardDto boardDto){
return boardService.setBoard(boardDto);
}
@GetMapping("/article/{id}")
public Board getBoard(@PathVariable Long id){
return boardService.getBoard(id);
}
}
package com.sparta.springtest.dto;
import com.sparta.springtest.domain.entity.Board;
import lombok.*;
import java.time.LocalDateTime;
@Getter
@Setter
public class BoardDto {
private String content;
}
package com.sparta.springtest.service;
import com.sparta.springtest.domain.entity.Board;
import com.sparta.springtest.dto.BoardDto;
import com.sparta.springtest.repository.BoardRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
@RequiredArgsConstructor
@Service
public class BoardService {
private final BoardRepository boardRepository;
public Board setBoard(BoardDto boardDto){
Board board = new Board();
board.setContent(boardDto.getContent());
//boardDto로 받아온 데이터를 board 엔티티에 저장
boardRepository.save(board);
return board;
}
public Board getBoard(Long id){
return boardRepository.findById(id).get();
}
}
import lombok.Setter;
import javax.persistence.*;
@Setter
@Getter // get 함수를 일괄적으로 만들어줍니다.
@Entity // DB 테이블 역할을 합니다.
public class Board extends Timestamped {
// ID가 자동으로 생성 및 증가합니다.
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
// 반드시 값을 가지도록 합니다.
@Column(nullable = false)
private String content;
}
package com.sparta.springtest.repository;
import com.sparta.springtest.domain.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BoardRepository extends JpaRepository<Board, Long> {
}
Reference
この問題について([明日の学習キャンプ]#211118💻 TIL 💻), 我々は、より多くの情報をここで見つけました https://velog.io/@dltndudvlzm/내일배움캠프-211118-TILテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol