인라인 뷰
where다시 할 수 있음
from 부터 하지만
db순서
jpql 챗 gpt .구글링
j유닛
하나한 해보삼
이해안되지? 당근 실습해보셈
기본기. sql다시보쟈(join~~~, 서브쿼리, 인쿼리)
in~~
기사필기 공부 조아조아 이해하는 데 좋아
네이트쿼리 신경쓰삼
public List<Board> findAll(){
Query query = em.createQuery("select b from Board b order by b.id");
return null;
}
이건 jpl 자동완성 좋아
@GetMapping("/" )
public String index(HttpServletRequest request) {
List<Board> boardList = boardPersistRepository.findAll();
request.setAttribute("boardList", boardList);
return "index";
}
이거 실행해봐.
이거 중요중요해
@RequiredArgsConstructor
@Repository
public class BoardPersistRepository {
private final EntityManager em;
public Board findByID(int id){
Board board=em.find(Board.class, id);
return null;
}
public List<Board> findAll(){
Query query = em.createQuery("select b from Board b order by b.id desc", Board.class);
return query.getResultList();
}
해당 코드는 데이터베이스에서 게시판(Board)의 모든 목록을 불러오는 역할을 합니다.
여기서 Board.class는 반환되는 결과를 Board 엔티티의 객체로 매핑하기 위해 사용됩니다.
여기서 각 줄을 설명해 보겠습니다:
Query query = em.createNativeQuery("select * from board_tb order by id desc", Board.class);
: 이 코드는 EntityManager를 사용하여 네이티브 SQL 쿼리를 생성합니다.
createNativeQuery() 메서드는 네이티브 SQL 쿼리를 사용할 때 사용되며,
첫 번째 매개변수로 SQL 쿼리 문자열을,
두 번째 매개변수로 결과를 매핑할 엔티티 클래스를 전달합니다. 여기서는 "select * from board_tb order by id desc"라는 쿼리를 실행하고, 결과를 Board 엔티티의 객체로 매핑합니다.
return query.getResultList();: 이 코드는 쿼리를 실행하고 결과를 가져옵니다.
getResultList() 메서드는 쿼리 결과를 List 형태로 반환합니다.
이 리스트는 Board 엔티티의 객체들로 이루어져 있습니다.
따라서 이 코드는 데이터베이스에서 게시판의 모든 목록을 가져와서 Board 엔티티의 객체 리스트로 반환합니다. 이때, 각각의 열은 Board 엔티티의 인스턴스로 매핑되어 리스트에 포함됩니다.
em.find는 dr이 pc한테 1번 오브젝트가 있냐고??
em.find
항상pc는 비워있다고
1번 조회쿼리가 나온다고?
where-1 자동발동해. 자료가 없다면 pc에?
기보 생성자를 때려준다고?
비영속 ,영속 알아야 함.
없으면 조회~~
캐싱하지 못해서 조회쿼리가 날라감.
그래서 다시 응답을 받으면 pc에 board객체가 들어옴 pk가 당근 있어.
캣싱, 캐싱해
찾아서 바로들어오니까 쿼리 바로 나옴??
이 부분
조회2번째는 캐싱이라고??
실제 코드로 연습해보삼.
알려주는 거 실행하삼. 검증하삼.
오늘 하는 거 MYGRATION?
-REFACTORY? 그런 개념이지만 정확히는 mygration
먼저 핵심로직_보삼
비지니스 호출.. 비즈니스.. 핵심 기능이 뭐냐.. 이런 느낌?이야?
예외처리는 상황에 따라 다르다.
@Transactional
private void deleteByIdV2(int id){
Board board = findByBId(id);
em.remove(board);
}
테스트 많이 하삼
@만드는 거 공부했지? 정리해요
@Transactional 기본이 커밋 혹은 롤백~기본 원자성?
예외처리
rollback 안되면 commit????
중첩 transactional : 트랜젝션 안에 트렌젝션
트랜젝션… 리무브.. 커밋..
pc에는
조회
삭제는 트랜잭션 전송할 때???
끝날 때 쿼리줌??
리무브는 사실 pc에서 삭제???
pc 우리가 배워 한다.
용어도 참 많아
테스트라…어떤 것들으 테스트하고 어떤 개념 때문이었죠?
트랜젝션이 공유될 때 쿼리가 전송된다. -v
트랜젝션 종료 시 롤백 혹은 커밋 타이밍 시 ....~~~ 테스트에는 트랜젝션 종료 시 롤백! rollback 메모리 상에 있는 거 undo 데이터로 만든는 것/ 복구하는 것? commit 메로리 있는 것들을 hdd에 기록하는 것
트랜잭션 끝나면 commit되서 영구히 기록
메모리에 남아있음. commit 전에는
업데이트 안한다고
조회해서 상태조회한다고?
트랜잭션 종료시 자동~ 해준다고?
삭제는 그냥 아무것도 없어도 된다고??
조회를 한 번 하면 , (기본기)
update, delete-v
트랜젝션의 시간이 아예 안 듦
조회하고 삭제(기본)
아니면 유령데이터를 가질 수 있음
delete은 괜춘, 내 서버에 영향 x 어차피 그냥 삭제??
라이트(write)를 할 때 반드시 조회???
dupdate. delete은 괜춘??/?
비지니스마다 다름
필기라도 적어놓자
setter로 하나씩 보다 board.update(reqDTO)가 훨씬 낫지?
PUBLIC VOID UPDATE(BoardRequest. Update DTO reqDTO){
this.title = reqDTO.getTitle
????
어쩔 때 더티체킹?? 끝날 때 update
더티체킹
board.update(reqDTO)
영속성에 있는 객체잖아
무조건 되는 거 아니라고?
Share article