✅ ddl-auto: create
package jpabook.jpashop;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
private Long id;
private String username;
}
package jpabook.jpashop;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Repository
public class MemberRepository {
@PersistenceContext // EntityManager 을 자동으로 주입해줌
EntityManager em;
public Long save(Member member){
em.persist(member);
return member.getId();
}
public Member find(Long id){
return em.find(Member.class, id);
}
}
엔티티 매니저 공장 -> 엔티티 매니저를 만들고 -> 엔티티매니저가 위에 jpa CRUD 기능을 담고 있다고 보면 된다.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
#show_sql: true ym
format_sql: true
logging.level:
org.hibernate.SQL: debug
org.hibernate.type: trace #쿼리 파라미터 로그 남기기
- create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
- create-drop: create와 같으나 종료시점에 테이블 DROP
- update: 변경분만 반영(운영DB에서는 사용하면 안됨)
- validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
- none: 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.)
주의할 점
결론 : spring.jpa.hibernate.ddl-auto: create 옵션은 🔥로컬환경에서만 사용🔥해야 된다
-> 로컬 환경을 제외한 나머지 서버에서는 최대한 직접 쿼리를 날려서 적용하는 것이 가장 좋다.
test가 안됨..
-> Intellij 설정에서 Run tests using 옵션을 Gradle이 아닌 IntelliJ IDEA로 해줘야 함.