minlog
article thumbnail
[ JPA ] Cascade ( 영속성 전의 ) - 고아제속성
BackEnd/Security · JPA 2023. 3. 31. 14:24

Cascade 영속성 전의 OneToOne, OnToMany, ManyToOne, ManyToMany 등의 연관관계에서 Cascade (*enum) 타입들을 설정할 수 있다. ( * enum : 어떤 값을 사용할수 있는지 예시를 볼수 있다.) @OneToOne, @OnToMany, @ManyToOne, @ManyToMany cascade = CascadeType.속성 defalut 기본값은 아무런 전의가 없는 것이다. PERSIST 생성시만 적용 . 객체가 생성될 때 연관관계에 있는 객체도 함께 생성. MERGE 업데이트시 연관관계가 있는 객체도 함께 수정. REMOVE ⭐ 삭제 시 연관관계가 있는 하위 객체도 함께 삭제된다. (많이 사용하지만 주의해야하는 속성 - 고아제속성 제거와 함께 확인) REFR..

article thumbnail
[ JPA ] Transaction
BackEnd/Security · JPA 2023. 3. 30. 02:19

Transaction Transaction 이란 DB 명령어들의 논리적인 묶음이다. Transaction 이라는 단어를 사용해서 여러가지의 쿼리들을 묶어서 사용하고 있다. ex) 하나의 Transaction : 물건 구매 => 결제 + 주문 1 . ACID 특성 A - 원자성 : 부분적인 성공을 허용하지 않는다. C - 일관성 : 데이터간의 정확성을 맞춘다. I - 독립성 : Transaction 내의 데이터 조작은 다른 Transaction 으로 부터 독립적인 속성을 가진다. D - 영구적 보관 : 데이터는 영구적으로 보관이 된다. 2. 사용방법 - @Transaction 어노테이션 을 사용할 수 있다. 1) DB저장 시점 save 가 되어도 DB에 저장이 되지 않는다. putBookAndAuthor ..

article thumbnail
[ JPA ] 영속성 컨텍스트와 Entity 생애주기
BackEnd/Security · JPA 2023. 3. 29. 23:26

1. 영속성 컨텍스트 > Entity 객체를 특별하게 감시하고 관리해주는 컨테이너 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 영속성 캐쉬가 flash가 되서 DB에 반영 되는 시점 flash() 메서드를 명시적으로 호출하는 시점 트랜직션이 끝나서 해당 쿼리가 커밋되는 시점 복잡한 조회 조건의 jpk가 실행되는 시점 2. Entity 생명 주기 'Entity' 하나의 객체에는 4가지의 상태가 존재한다. 비영속상태(new/transient) , 영속상태 (managed), 준영속상태(det..

article thumbnail
[ JPA ] 연관관계 - ERD
BackEnd/Security · JPA 2023. 3. 29. 16:46

연관관계(relation) 및 ERD ERD(앤티티 릴레이션십 다이어그램의 줄임말) 1 . 1 : 1연관관계 - @OneToOn @OneToOn 어노테이션 옵션 optional default 값은 true 이다. > outer join false 설정 시 not null로 설정 된다. > inner join mappedBy 연관 키를 해당 테이블에서 가지지 않게 만들어준다. 🍫 책과 책 리뷰와의 관계 1) 객체 생성 Book , BookReviewInfo 객체 생성 - 필드에 bookId 대신 Book 객체를 넣어줄 수 잇다. @OneToOn : 1 : 1 연관관계라는 선언. jpa에서는 entity로 set,get을 하면 릴레이션을 자동으로 맺을 수 있도록 처리해준다. 📑BookReviewInfo @E..

article thumbnail
[ JPA ] @Entity 속성 / Entity Listener /공통으로 사용하는 Entity속성 클래스로 분리하여 재 사용하기
BackEnd/Security · JPA 2023. 3. 28. 16:23

Entity Annotation Entity Annotation @Entity 데이터 베이스 @Table 명칭을 따로 정해줄 수 있다. @Id PK 값을 꼭 정해주어야한다. @GeneratedValue 자동으로 증가하는 값을 설정해준다. @GeneratedValue(strategy= GenerationType.IDENTITY) IDENTITY => MySql 테이블마다 해당 아이디 값을 auto로 증가시켜준다. 기본으로 어노테이션만 주었을 경우, 같은 시퀀스 객체를 사용하게되어 다른 테이블이 증가할때 동시 증가할수 있음. @ Column name 속성 으로 별도의 데이터 이름을 지정 할 수 있다. nullable = false => not null 컬럼을 만들어준다. updatable/ insertabl..