JPA

· JPA
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 다음은 주의할 점이다 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용X 저장할 필드에 final 사용 X @Entity 속성 속성: name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 이름 매핑한 테이블 이름 엔티티 이름을 사용 목록 데이터베이스 catalog 매핑 ..
· JPA
엔티티 매니저 팩토리와 엔티티 매니저 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어이다. "인티티를 영구 저장하는 환경"이라는 뜻을 지님. jpa내부 동작을 알기 위해서는 영속성 컨텍스트 이해가 필요하다 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //entityManager.close() 전에 code 작성 Member member =..
· JPA
플러시 엔티티 수정 변경 감지에서 flush 호출 돼서 엔티티와 스냅샷을 비교한다고 했음 플러시: 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영 플러시 발생 변경 감지 → 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 → 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 데이터베이스가 커밋되면 플러시가 자동으로 일어난다. 영속성 컨텍스트 플러시 하는 방법 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동 호출 코드 실행 결과는 보면 ==============이 선을 기준으로 이전에 쿼리문이 날라갔다. 이 말은 즉슨 em.flush한 시점에서 쿼리가 db에 날라갔음을 보여준다. (commit이전에 flush에서 쿼리..
· JPA
객체와 테이블 생성하고 매핑 @Entity JPA가 관리할 객체 jpa가 시작될 때 이 객체를 사용할 것이라고 인식 @Id 데이터베이스 PK와 매핑 PK가 뭔지 알려주기 위해 적어주는 것 @Table 엔티티의 테이블명 수동으로 지정 (@Table(name="NAME")) @Colum 쿼리문 나갈 때 칼럼 이름 지 JPA 사용 시 알아야 되는 것 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유한다. 엔티티 매니저 팩토리는 애플리케이션 로딩 시점에 한개만 들어여야 한다. 엔티티 매니저는 쓰레드간에 공유하지 않는다. 트랜잭션마다 엔티티 매니저를 만들어줘야한다. JPA의 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다 jpa에서 모든 데이터를 변경하는 모든 작업은 트랜잭션 안에서 작업해야 한..
· JPA
JPA 구동 방식 Persistence라는 클래스에서 시작한다. 여기서 설정정보 (META-INF/persistence.xml)를 읽어서 EntityManagerFactory라는 클래스를 생성한다. EntityManagerFactory는 EntityManager를 생성해서 동작한다. persistence-unit 의 이름은 hello 라고 설정했으므로 EntitymanagerFactory생성할 때 persistenceUnitName을 hello라고 해준다 H2 데이터베이스 JDBC url 설정
hapBday
'JPA' 카테고리의 글 목록 (2 Page)