본문 바로가기

Spring/Spring Data JPA26

Hibernate/ spring jpa bulk save 데이터를 한번에 여러 데이터를 저장할때 , bulk save로 검색하면 여러 샘플이 나오는데 10만건(특정)의 데이터를 50(특정)건수 만큼씩 끊어서 Transaction을 적용하고 저장하고 싶을때 참고하면 좋을거 같다. Spring 에서 Transaction을 사용하기 위해서는 몇가지 주의할점이 있다. 1. class 나 inferface 에선언하여 사용한다. 2. 자기 참조는 불가능 하다. (클레스를 분리하여 외부 호출로 사용 ) - AOP proxy 방식때문이다. 3. private method 에서는 동작되지 않음 자기 참조로 호출이 불가능 하기때문에 약간의 꼼수라고 해야 할까요 ? 내부 무명 클레스를 이요하거나, DL 방식으로 Class를 불러와서 사용하면 가능 하다. 예제는 DL 방식으로 불러.. 2019. 3. 26.
JPA Hibernate Bulk Save , Multi save Hibernate 특징 Hibernate는 새로이 삽입 된 모든 Customer인스턴스를 세션 레벨1 cache에 캐시 하므로 트랜잭션이 끝나면 100000 개의 엔티티가 영속 컨텍스트에 의해 관리됩니다. JVM에 할당 된 최대 메모리가 다소 적 으면이 예제는에서 실패 할 수 OutOfMemoryException있습니다. Java 1.8 JVM은 사용 가능한 RAM의 1/4 또는 1Gb를 할당하여 힙에 100,000 개의 객체를 쉽게 수용 할 수 있습니다. 장기 실행 트랜잭션은 연결 풀을 고갈시켜 다른 트랜잭션이 처리 할 기회를 얻을 수 없습니다. JDBC 일괄 처리는 기본적으로 활성화되어 있지 않으므로 모든 삽입 문에는 데이터베이스 왕복이 필요합니다. JDBC 배치를 사용하려면 hibernate.jdb.. 2019. 1. 3.
JPA Hibernate Multi PK 주의점 (정적 내부 클레스) Hibernate 사용시 주의점 Hibernate: No default constructor for entity Inner Classhttps://stackoverflow.com/questions/28053135/hibernate-no-default-constructor-for-entity-inner-class 내부 클래스 이용시 하이버네이트 내부에서 프록시(리플레케이션)으로 기본 생성자를 콜 한다. 이때 내부 클레스를 사용 하게 되면 실제로 내부클레스는 디폴트 생성자가 없기때문에 에러가 나가 된다. 이에 문제를 해결하기 위해서는 정적 내부 클레스를 이용한다. 해결 방안 : 정적 내부클레스 이용 @Embeddablepublic class ClassName { @EmbeddeId public static .. 2018. 10. 8.
@OneToOne 양방향 매핑 주키(PK)공유 @OneToOne 양방향 매핑 주키(PK)공유 두테이블에서 같은 키를 PK로 이용한다. A -> PK -> B -> FK,PK *부모객체메인객체 @OneToOne 선언영속상태 정의부모객체에 양방향 매핑의 mappedBy를 설정하여 외례키 컬럼이 생성되지 않도록 한다. @Entity@JsonIgnoreProperties(ignoreUnknown = true)public class Users implements Serializable { @Id private String email; @OneToOne(mappedBy = "users" , cascade = { CascadeType.PERSIST ,CascadeType.MERGE , CascadeType.REMOVE // 사용자 삭제시 FCM Key 함께 삭제.. 2017. 9. 27.
728x90