JPA 11

[JPA] 기본 키 매핑 어노테이션 @Id / @GeneratedValue [IDENTITY, SEQUENCE, TABLE, AUTO]

@Id - 내가 직접 셋팅해주는 직접 할당 @GeneratedValue - IDENTITY : 데이터베이스에 위임, MYSQL @Id//pk가 무엇인지 알려줌 @GeneratedValue(strategy=GenerationType.IDENTITY) private String id; -> MYSQL의 autoincrement와 같이 DB가 알아서 값을 넣어주는 자동 생성 방법 Member member = new Member(); //member.setId("ID_A"); member.setUsername("Hi"); em.persist(member); id 값은 자동할당하기로 하였기 때문에 값을 안주고 실행하게되면 MySQL 방언에 따라 아래와 같이 auto_increment로 생성된다. 순차적으로 id ..

JPA 2021.07.06

[JPA] @Temporal / @Lob / @Transient 속성

@Temporal 날짜 타입 (java.util.Date, java.util.Calendar)을 매핑할 때 사용 - DATE : 날짜 2020-07-05 - TIME : 시간 10:50:11 - TIMESTAMP : 날짜,시간 2020-07-05 10:50:11 ** 지금은 사실 @Temporal이 필요 없다.. 자바8이 되면서 하이버네이트에서 LocalDate, LocalDateTime을 지원해주기 시작하였다. @Temporal(TemporalType.TIMESTAMP) //날짜 Type -> DATE날짜/TIME시간/TIMESTAMP날짜시간 private Date createdDate; @Temporal(TemporalType.TIMESTAMP) private Date lastModifiedDate;..

JPA 2021.07.05

[JPA] @Column / @Enumerated 속성

@Column 컬럼을 매핑 name : 필드와 매핑할 테이블의 컬럼 이름 @Column(name = "name") private String username; insertable / updateable : 등록, 변경 가능 여부 / 기본값 : TRUE //DB에 insert문이 처리될 때 할건지 말건지 / update문 처리될때 반영할건지 말건지 @Column(insertable=true, updatable=true) private String username; nullable : null 값의 허용 여부 설정 (false로 설정하면 DDL 생성시 not null 처리) / 기본값 : TRUE // false일 경우, not null 제약조건이 걸린다 @Column(nullable=false) priva..

JPA 2021.07.02

[JPA] @Entity / @Table 매핑 어노테이션 정리

@Entity - @Entity가 붙은 클래스는 JPA가 관리한다. - JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수 - 기본 생성자 필수!! JPA 스펙상 규정이 되어있다고 해요 :) - final 클래스, enum, interface, inner 클래스는 @Entity 를 이용해서 사용할 수 없음 - 저장할 필드에 final 사용할 수 없음 @Entity 속성 1. @Entity(name="Member") - JPA가 내부적으로 구분하는 이름 - 설정을 따로 안하면 기본값으로 클래스 이름을 그대로 사용한다. - 같은 클래스 이름이 없으면 가급적으로 기본값을 사용한다. @Table - 엔티티와 매핑할 테이블 지정 1. @Table(name="MBR") - MBR 테이블로 처리된다. -..

JPA 2021.07.01

[JPA] 플러시 flush란?

플러시 flush란? 플러시는 영속성 컨텍스트의 변경내용을 데이터베이스에 반영해주는 것 - 영속성 컨텍스트를 비우지 않음 - 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 - 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화하면 됨 플러시가 발생되는 시점 - 변경 감지 - 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 - 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 em.flush() : 직접 호출하는 것, 사용은 안하지만 알아만 둘 것 Member member = new Member(200L, "member200"); em.persist(member); // 강제 호출 em.flush(); System.out.print..

JPA 2021.06.30

[JPA] 영속성 컨텍스트 PersistenceContext

영속성 컨텍스트란? - JPA에서 빼놓을 수 없는 가장 중요한 용어 - 엔티티를 영구 저장하는 환경 - EntityManager.persist(entity); persist는 우리가 DB에 저장하는 것으로 알고있지만 실제로는 엔티티를 영속성 컨테스트라는 곳에 저장하는 것 EntityManager가 생성되면 영속성 컨텍스트가 하나 생성된다. 엔티티의 생명주기 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속 (managed) : 영속성 컨텍스트에 관리되는 상태 EntityManager생성 후..

JPA 2021.06.29

[JPA] JPQL / 페이징 처리

안녕하세요 :> JPQL이란? JPQL은 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어입니다. JPA에서 자동으로 쿼리를 만들어주는데 조인을 걸어야하고, 검색 조건을 걸어야한다면 어떻게 처리를 할 것 인가? 를 도와주는 것이 JPQL입니다. - SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 등을 지원 - JPQL은 엔티티 객체를 대상으로 쿼리 / SQL은 데이터베이스 테이블을 대상으로 쿼리 - JPQL은 DB가 바뀌어도 쿼리를 바꿀 필요가 없음 JPA에서 알아서 변경해줌 createQuery를 통해 우리가 쿼리를 작성하면 List result = em.createQuery("select m from Member as m", Member.clas..

JPA 2021.06.28

[JPA] DB 저장, 조회, 삭제, 수정하기 DB CRUD

안녕하세요 오늘은 JPA로 DB 저장, 조회, 수정, 삭제하기를 포스팅하려고합니다. 2021.06.24 - [JPA] - [JPA] DB 연결 설정 및 DB에 저장하기 [JPA] DB 연결 설정 및 DB에 저장하기 2021.06.23 - [JPA] - [JPA] Eclipse로 JPA 프로젝트 생성하기 [JPA] Eclipse로 JPA 프로젝트 생성하기 프로젝트 생성 [Dynamic Web Project] - Next 프로젝트 명 작성 후 Next build path 설정 후 Next 설정 후 F.. ddol.tistory.com 일단 DB 연결하고 그 외의 자잘한 설정들은 이전 글 참조해주세요! DB 저장 저장은 persist를 사용하여 DB에 값을 저장할 수 있습니다. Member member = n..

JPA 2021.06.25

[JPA] DB 연결 설정 및 DB에 저장하기

2021.06.23 - [JPA] - [JPA] Eclipse로 JPA 프로젝트 생성하기 [JPA] Eclipse로 JPA 프로젝트 생성하기 프로젝트 생성 [Dynamic Web Project] - Next 프로젝트 명 작성 후 Next build path 설정 후 Next 설정 후 Finish 프로젝트 우클릭 - properties - Project Facets - JPA 체크 Apply and Close 선택 [Config.. ddol.tistory.com 안녕하세요! 오늘은 JPA 프로젝트 생성하기에 이어 DB 설정 및 저장하는 방법을 소개해드리려고합니다~ JPA DB설정하기 META-INF - persistence.xml 열기 persistence.xml - properties 옵션 1. show..

JPA 2021.06.24

[JPA] Eclipse로 JPA 프로젝트 생성하기

프로젝트 생성 [Dynamic Web Project] - Next 프로젝트 명 작성 후 Next build path 설정 후 Next 설정 후 Finish 프로젝트 우클릭 - properties - Project Facets - JPA 체크 Apply and Close 선택 [Configure] - [Convert to Maven Project] 클릭하면 pom.xml 생성 pom.xml에 dependency 추가 hibernate-entitymanager는 jpa에 사용가능한 라이브러리를 모두 가져다 사용 h2는 DB연결을 하기위해 적용한 라이브러리로 각자 입맛에 맞게 사용하면 됨 인강으로 공부하면서 작성하는 글로 잘못된 정보가 있을 수도 있습니다! 잘못된 정보가 있을 시 댓글달아주세요 : 0

JPA 2021.06.23