minlog
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..

article thumbnail
[ JPA ] 쿼리메서드 - 페이징
BackEnd/Security · JPA 2023. 3. 20. 14:00

JPA QueryMethod JpaRepository 인터페이스를 상속받는 레파지토리 인터페이스에서 쿼리메서드를 생성할 수 있다. 📑UserRepository public interface UserRepository extends JpaRepository { ... } 💡메서드 이름으로 쿼리 생성 네이밍 규칙 > 코드의 가독성이 중요하다. 검색 관련 메서드 명 findByEmail(String email) getByEmail(String email) readByEmail(String email) searchByEmail(String email) findFirst2ByEmail(String email) 처음 부터 2개 까지 검색 findTop2ByEmail(String email) 처음 부터 2개 까지 검..

article thumbnail
[ JPA ] 기본 메서드를 사용한 쿼리 - CRUD · Page
BackEnd/Security · JPA 2023. 3. 16. 16:00

JPA 란? ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. JPA를 사용하면 개발자가 직접 JDBC API를 쓰는 것이 아니다. ORM (Object-Relational Mapping) : 객체 관계 매핑 자바객체(Class)와 데이터베이스 레코드관의 연결관계를 맺어주는 것 최종적으로 동작하는 것들은 sql 쿼리 1. JPA 세팅과 DB객체 설정 1) 의존성 주입 📑build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 2) 데이터베이스 연결 인텔리제이..