묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
데이터 변경시 set과 persist
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]안녕하세요 JPA 기본편 8강 영속성컨텍스트2 강의듣다가 의문이 생겨서 질문남깁니다. 요즘제가 git도 배우면서 보니 약간 개념이 겹치는 것 같더라구요. 수업중에 데이터 변경시에 persist를 쓰면 update쿼리가 날라가니 쓰면안되는거구 set으로 변경을 해주면 된다라고 하셧을때 곧이 곧대로 이해가 갔는데 그 부분을 되게 강조해서 말씀하시더라구요. (git에서도 update는 새로운 정보를 올리는거고 modified가 수정이라서 그런갑다 했었는데) 혹시 이 부분을 보통 왜 헷갈려하는지 여쭤봐도 될까요..? 제가 모르는게 많다보니 헷갈려할 지식도 없는 듯해서, persist를 사용해서 데이터의 등록이아닌 수정을 하는 경우가 있어서 그런건지. 왜 어떤 개념때문에 헷갈려 하는지.. 궁금합니다.! 감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
persis 시 프로시저 또는 sql function 호출 방법
안녕하세요. 강의를 들은지 꽤 되었지만 드디어 업무에 조그마한 부분에 적용을 시도하게 되었습니다. 현재 다수의 테이블에 기본키 외 유니크 인덱스로 식별자 겸 범위 검색을 위한 컬럼이 있습니다.(데이터의 급작스러운 증가로 최소한의 변경을 선택하다보니 어쩔수 없는 선택이었으나 JPA를 사용하려니 오히려 허들이 되어버렸습니다.) 해당 컬럼은 oracle의 function으로 특정한 패턴의 값을 생성하고 있어 mybatis를 사용할 때는 insert구문에서 함수 호출로 해결하였지만 JPA에서는 어떻게 처리를 해야할지 모르겠습니다. 우선적으로 생각하는 방법은 간단하게 1. @prepersist에서 null인 경우 function을 호출하여 값을 지정하는 방법 2. persistable을 이용하여 function을 호출하여 값을 지정하는 방법 3. save 메소드를 오버라이드하여 ID가 null인 경우 커스텀 어노테이션을 찾고 값이 null인 경우 function을 호출하여 값을 지정할 생각입니다. 해당 방법 외 JPA의 기본 어노테이션 중 @GeneratedValue와 같은 생성 전략이나 어노테이션으로 해결 방법이 있을까요?
-
해결됨
jpa persist not working
안녕하세요! jpa를 이용하여 db를 2개 접속합니다. 각각 config 패키지에 bean을 등록하여 사용했습니다. 발생한 문제는 다음과 같습니다. @Primary로 등록한 1번 db의 datasource부분에서는 문제없이 Transaction이 잘 일어나지만 등록하지 않은 2번 db datasource에서는 select같은 쿼리는 동작하지만 pesist는 동작하지 않습니다. 2번 db에서는 Transaction이 일어나지 않는것 같은데... https://jonghyeok-dev.tistory.com/44 위 블로그를 참고하여 코드를 작성 했습니다. 해결 방법이 있을까요? 감사합니다...!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 관련 persist 전에 쿼리가 날아가는 경우
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요. 섹션 3 영속성 관리 부분을 들으며 궁금한 점이 생겼습니다. EntityManager를 이용해 엔티티를 em.persist(entity) 했을 때 영속화만 시키고, DB로는 쿼리가 안 날아가는 것으로 들었습니다. 테스트 환경이 잘못된 것인지 Spring boot 환경에서는 다른건지 궁금해서 질문 남깁니다. 저의 테스트 코드를 첨부합니다. 커밋하기 전 em.persist(studio);를 했을 때 Insert 쿼리가 나갑니다 ㅠㅠ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; @SpringBootTest public class NewTest { @Autowired EntityManagerFactory emf; @Test public void test() { EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Hello hello = Hello.builder() .name("hello") .build(); System.out.println(">>>>>>>"); em.persist(hello); System.out.println(">>>>>>>"); System.out.println(">>>>>>> Commit"); tx.commit(); System.out.println(">>>>>>>"); em.close(); } }