JPA

· Database/JPA
들어가며토이 프로젝트를 하며 이 오류를 처음 접하게 되었다. 아래 내용을 통해 어떻게 해결하는지 알아보자 아래 코드를 보자@RequiredArgsConstructorpublic class CustomUserDetails implements UserDetails { private final LoginEntity login; private MemberEntity member; @Override public Collection getAuthorities () { Collection collection = new ArrayList(); collection.add(new GrantedAuthority() { @Override public String getAuthority () { return l..
· Database/JPA
서론 토이프로젝트를 진행하다가 insert 쿼리를 날리는 회원가입 로직을 작성하는데자꾸 마지막에 쿼리에 update 쿼리가 발생하는 문제를 확인하였다. DB에 insert 되는 데이터에는 크게 문제가 없긴했다.하지만 궁금했다, 나는 분명 insert 로직만 작성을 했는데 왜 update 쿼리가 날라갈까? 본론을 들어가기 전에 간단한 더티 체킹 개념에 대해서 이야기 해보겠습니다. 더티 체킹이란?JPA에서 더티 체킹(dirty checking)이란 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서, 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능이다.여기서 말하는 dirty는 “엔티티 데이터의 변경된 부분”을 뜻하며 checking은 변경된 부분을 감지한다는 의미이다. ..
· Database/JPA
오늘은 JPA 어노테이션인 @Embedded @Embeddable 에 대해서 알아보겠습니다.  서론JPA 는 Java 에서 사용할 수 있는 ORM 으로 정말 유용한 도구 입니다.보통 Java,Spring 개발자들은 Spring Data JPA 를 사용합니다. Spring Data JPA 는 추상화가 아주 잘되어 있어 사용에 정말 유용 합니다. 하지만 사용에 유용한 만큼, 잘 알고 사용할 필요가 있습니다.  Spring Data JPA 를 추가하게 되면jakarta.persistence; 위 패키지에서 추상화가 잘된 인터페이스 및 어노테이션을 사용할 수 있습니다.그리고 공식문서 또한 보기 좋게 되어 있어, 개발 생산성에 아주 좋다고 생각합니다. 왜 JPA Entity 에서 @Embeddalbe , @Emb..
· Database/JPA
안녕하세요🖐 공부를 하다가, 엔티티는 DB와 직접적으로 접근하는 영역이기 때문에 건들면 안된다는 이야기를 들었습니다 왜 건들면 안된다는 걸까요❓ 그러면 엔티티에 접근을 안하고, 어떻게 DB에 접근해서 CRUD를 진행할까? 라는 생각이 먼저 들었습니다. 이에 대한 내용을 포스팅 해보겠습니다. 일단 저는 간단한 Rest API 연습을 하기 위해서 CRUD 게시판을 짜기 위해 공부중이였습니다. 최대한 객체지향 적으로 짜기 위해, 스프링 3Layer Architecture 를 도입해서 진행을 했습니다. 설명 : https://hyeonq.tistory.com/131 일단 Entity를 생성을 하겠습니다. @Getter @NoArgsConstructor @Entity public class Question { @..
· Database/JPA
안녕하세요🖐 제가 Springboot + JPA 공부를 하다가 궁금한 점을 포스팅 해보겠습니다. 저는 Dto를 생성할 때 항상 기본 자료형으로 선언을 했습니다 public class DtoA { private long id; private String name; private int age; private String addr; } 이런식으로 Dto를 구성하여도 크게 문제는 없었습니다. 왜냐하면 평소에 ORM은 Mybatis를 위주로 프로젝트를 진행하였고, 대부분 Mybatis를 활용했기 때문 입니다. 실제로 위 필드를 기본자료형으로 해서 생긴 문제 또한 없었습니다.. 그러나 현재 트렌드인 JPA를 공부 중에 모든 Dto 구성 자료형을 기본 타입이 아닌 래퍼 타입으로 구성을 합니다. 왜 그런지 궁금해졌고..
· Spring/Boot
오늘은 JPA를 활용하여 게시판을 페이징 해보도록 하겠습니다. 1) 서론1-1) 페이징을 하는 이유 여러분들은 페이징을 왜 해야하는가에 대해서 생각해본적이 있나요❓컴퓨터 공학을 전공한 분이라면 페이징이라고 하면 두가지를 떠올릴 수 있습니다. 1) 게시판 같은, 웹 페이지에서 페이지가 넘어가는 페이징2) 가상메모리 관리 기술인 페이징 두가지를 생각할 수 있습니다.여기서 제가 설명할 것은 1번인 웹 페이지에서 페이지를 이동시키는 페이징을 진행 해보도록 할 것 입니다. 📢 결과적으로 제가 페이징을 하면서 느꼈던 것을 바탕으로 페이징을 필요성 대해서 적어보겠습니다.1) 사용자 경험 향상페이징을 하지 않으면 모든 글들이 한번에 나열되게됩니다. 글이 200개 300개 라면은 사..
· Database/JPA
Spring Data JPA에서 자주 사용하는 메소드 예시 입니다.  R = (Select)1) findAll()위 메소드는 DB 데이터를 조회(select)할 때 사용이 됩니다 @Test void SelectTest2() { List allList = this.questionRepository.findAll(); assertEquals(2, allList.size()); Question q = allList.get(0); assertEquals("안녕?",q.getSubject()); }우리는 총 2건의 데이터를 insert했기 때문에 데이터의 사이즈는 2가 되어야 합니다.데이터 사이즈가 2인지 확인하기 위해 JUnit의 assertEquals 메서드를 사용했습니다. assertEquals는 a..
· Database/JPA
JPA에 대한 간단한 포스팅을 해보겠습니다. 공부를 해서 아는 내용이 추가될수록 이 글에도 추가적으로 글을 수정하도록 하겠습니다. JPA란? JPA를 사용하기 위해서는 기본적인 데이터베이스 쿼리를 사용할 수 있으면 좋습니다. 기본적으로 DB를 핸들링 하기 위해서는, SQL쿼리를 통해서 할 수 있습니다. 그러나 ORM(object relational mapping)을 사용하면은 자바 문법을 이용하여 DB를 핸들링 할 수 있습니다. 즉 ORM을 이용하면 개발자가 쿼리를 작성하지 않고, DB의 데이터를 핸들링할 수 있다는 것이다. - ORM 기존 SQL을 바탕으로 ORM을 활용할 수 가 있습니다. 예를들어 num id pass email 1 abc 1234 abc@gmail.com 2 def 5678 def@..
hyeon.q
'JPA' 태그의 글 목록