본문 바로가기
728x90

🍃SpringFrameworks/SpringDataJPA17

[JPA] JPA - MySQL 연동 💡 JPA와 MySQL을 연동하여 사용해보자! 1. 우측 상단 메뉴바의 Database → ‘+’버튼 → DataSource → MySQL → root(pw) 입력하고 OK 2. application.yml 파일에 정의 spring: h2: console: enabled: true jpa: show-sql: true properties: hibernate: format_sql: true generate-ddl: true hibernate: ddl-auto: create-drop datasource: url: jdbc:mysql://localhost username: root password: sql: init: mode: always 3. build.gradle 파일에 코드 추가 implementatio.. 2023. 9. 10.
[JPA] 1:N Relation. 관계 설정 [1:1] 관계와 거의 유사하지만 하나의 User가 여러 UserHistory를 가질 수 있는 관계이다. [1:N], [N:1] 관계는 상황에 따라 둘다 걸어 양방향에서 참조가 가능하게 할 수 도 있고 한쪽 방향에서만 걸어줄 수도 있다. 💡 1:N 릴레이션 (주 테이블) 매우 간단하다. (기본적인 것은 1:1 릴레이션 참고!) @OneToMany 어노테이션을 붙여준다. 1:1 관계에서 주 테이블(User)에서 대상 테이블(UserHistory) 타입의 속성을 선언했다면, 1:N 관계에서는 대상 테이블(UserHistory)타입을 갖는 List타입으로 속성을 선언해주면 된다. (UserEntity) @OneToMany(fetch = FetchType.EAGER) @JoinColumn(name = "user.. 2023. 9. 10.
[JPA] 1:1 Relation. 관계 설정 💡 1대1 관계 설정 1:1 관계에서는 @OneToOne 어노테이션을 사용하여 관계를 정의해 줄 수 있다. 일대다(1:N), 다대일(N:1) 관계에서는 다(N) 쪽이 항상 외래 키를 가지고 있다. 하지만 일대일(1:1) 관계에서는 주 테이블이나 대상이 되는 테이블 양쪽 모두 외래 키를 가질 수 있다. 그렇기 때문에 일대일 관계를 적용할 때는 주 테이블과 대상이 되는 테이블, 어느 쪽에 외래 키를 둘지 선택 해야 한다. JPA에서는 외래키를 갖는 Entity가 연관 관계의 주인이 되어 외래키를 관리(등록,수정,삭제) 할 수 있다. 1-1. 일대일 연관 관계에서 외래 키가 주 테이블에 있는 경우 - 단방향 1-2. 일대일 연관 관계에서 외래 키가 주 테이블에 있는 경우 - 양방향 2-1. 일대일 연관 관계에.. 2023. 9. 10.
[JPA] Entity Listener. 엔티티 리스너 💡 Entity Listener란? 엔티티의 변화를 감지하고 테이블의 데이터를 조작한다. @PrePersist Persist(insert)메서드가 호출되기 전에 실행되는 메서드 @PreUpdate merge메서드가 호출되기 전에 실행되는 메서드 @PreRemove Delete메서드가 호출되기 전에 실행되는 메서드 @PostPersist Persist(insert)메서드가 호출된 이후에 실행되는 메서드 @PostUpdate merge메서드가 호출된 후에 실행되는 메서드 @PostRemove Delete메서드가 호출된 후에 실행되는 메서드 @PostLoad Select조회가 일어난 직후에 실행되는 메서드 @EntityListeners(value = ???.class) Entity Listener를 현재 En.. 2023. 9. 10.
[JPA] JPA Annotation. 어노테이션 💡 JPA에서 사용되는 어노테이션! 1. @Entity JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션이다. JPA가 해당 클래스를 관리하게 된다. 속성 기능 name JPA에서 사용할 엔티티 이름 지정name을 쓰지 않을 경우 (default) 클래스 이름을 entity 이름으로 지정 @Entity의 name = "user2"로 함으로써 user2 테이블이 생성된 것을 볼 수 있다. @Entity(name = "user2") publicclassUser {} 주의 사항 기본 생성자가 꼭 필요 (@NoArgsConstructor) final, enum, interface, innter class에서는 사용 불가 필드(변수)를 final로 선언 불가 2. @Table 엔티티와 매핑할 테이블을 .. 2023. 9. 10.
[JPA] Query Method. 쿼리 메서드 Spring Data JPA에서 제공하는 공동 인터페이스는 기본적인 CRUD를 제공해준다. (JpaRepository) JpaRepository Entity의 클래스명 + Repository 로 인터페이스 생성 JpaRepository 상속 (extends) 속성으로 ‘Entity의 클래스명’, ‘Entity기본키(Id)의 타입’ 지정 💡 QueryMethod 이름 지정 간단한 쿼리일 경우 이와 같은 쿼리 메서드를 이용한다. 같은 분류의 메서드는 이름만 다를 뿐 똑같은 기능을 한다. (조회 : find..By, read..By, get…By 등) spring data JPA - 참조 문서 (spring.io) QueryMethod 필터 조건 쿼리 조건 메서드명 실제 쿼리문 Distinct findDist.. 2023. 9. 10.
[JPA] H2 Database 💡 H2 Database 란? 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 장점 따로 설치가 필요없다 용량이 매우 가볍다 웹용 콘솔(쿼리툴) 제공하여 개발용 로컬DB로 사용 용이 특징 JAVA로 작성된 오픈소스 RDBMS 스프링 부트가 지원하는 인메모리 관계형 데이터베이스 인메모리로 띄우면 애플리케이션 재기동 때마다 초기화 로컬 환경, 테스트 환경에서 많이 쓰임 In-Memory DB 컴퓨터가 꺼지면 모든 내용이 날라감 연속성이 없음 연속성을 주는 방법이 있지만, 그 방법을 쓰려면 그냥 일반 DB모드로 쓰면 된다. 💡 사용하기 Intellij에서 간단하게 사용하는 방법 서버 실행 Run의 Console창에서 “H2 console available at '/h2-console'. Database a.. 2023. 9. 10.
[JPA] JPA란? 💡 JPA (Java Persistence API) 란? 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 💡 우선 ORM에 대해 알아야 한다! 애플리케이션 Class와 DataBase테이블을 매핑(연결)해준다. 즉 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이다. 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있음.(내부적으로는 쿼리를 생성하여 DB를 조작함. 하지.. 2023. 9. 10.
728x90