JPA19 [JPA] 영속성 컨텍스트 엔티티 매니저 팩토리 & 엔티티 매니저 영속성 컨텍스트에 대해 알아보기 전에 엔티티 매니저 팩토리와 엔티티 매니저에 대해서 알아보겠습니다. 엔티티 매니저 팩토리는 생성되는 시점에 DB 커넥션 풀을 생성해 둔 후, 요청이 들어올 때마다 엔티티 매니저를 생성합니다. 엔티티 매니저는 DB 연결이 필요한 시점( 보통 트랜잭션이 시작되는 경우)에 connection을 얻습니다. 일반 적인 웹 애플리케이션에서의 엔티티 매니저 팩토리와 엔티티 매니저 구동방식 엔티티 매니저 팩토리가 엔티티 매니저를 사용하는 이유 엔티티 매니저 팩토리 엔티티 매니저 생성 시점에 DB 커넥션 풀을 생성하는 등 생성 비용이 크기 때문에 DB 를 하나만 사용하는 어플리케이션이라면 일반적으로 하나만 만든다. 엔티티 매니저 팩토리를 이용해서 생.. JPA 2022. 5. 11. [JPA] 단방향 연관관계 JPA 연관관계 중 단방향 연관관계에 대해서 알아보겠습니다. 1.연관관계가 필요한 이유 요구사항 - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. -회원과 팀은 다대일 관계이다. 객체 테이블에 맞추어 모델링(참조 대신 외래키를 그대로 사용) 아래는 회원과 팀 클래스 입니다. @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; ... } @Entity public class Team { @Id @GeneratedValue private Long id; pr.. JPA 2022. 5. 9. [JPA]기본 키 매핑 public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager();//database 커넥션 하나 받았다 생각하면됨. EntityTransaction tx = em.getTransaction(); tx.begin(); try { Member member = new Member(); member.setUsername("C"); em.persist(member); tx.commit(); } catch (Exception e) { tx.rollbac.. JPA 2022. 5. 8. [JPA] 기본 @Anotation 정리 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 클래스이다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. 데이터베이스의 테이블과 일대일로 매칭되는 객체단위이며 Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미합니다. 그래서 객체의 인스턴스를 구분하기 위한 유일한 키값을 가지는데 이것은 테이블 상의 Primary Key와 같은 의미를 가지며 @Id 어노테이션으로 표기합니다. 이때 명시적으로 @Table 의 name 속성을 이용해 데이터베이스상의 실제 테이블 명칭을 지정하지 않는다면 Entity클래스의 이름 그대로 CameCase를 유지한채 테이블이 생성되기 때문에 테이블 이름을 명시적으로 작성하는것이 관례입니다. 왜냐하면 데이터베이스상에서 보편적.. JPA 2022. 5. 8. [JPA] 데이터베이스 스키마 자동 생성 보통 개발할 때 데이터베이스의 테이블을 먼저 만들어놓고 자바 객체를 만들어 개발을 시작했는데 JPA에서는 객체를 만들어 매핑을 해놓으면 애플리케이션을 시작할 때 테이블들을 다 만들어줍니다. Spring Boot를 설정할때 persistence.xml에 아래와 같이 설정하면 기존 테이블을 삭제 후 다시 생성 해줍니다(DROP + CREATE) 이 외에도 create-drop, update, validate, none 등이 있습니다. 주의점!! 운영 장비에는 절대 create, create-drop,update 를 사용하면 안된다.개발 초기 단계는 create 또는 update.테스트 서버는 update 또는 validate.스테이징 운영 서버는 validate 또는 none. JPA 2022. 5. 8. [Spring JPA] JPA란? 이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. JPA 란? -Java Persistence API -자바 진영의 ORM 기술 표준 ORM -Object-Relational Mapping (객체관계 매핑) -객체는 객체대로 설계 -관계형 데이터베이스는 관계형 데이터베이스대로 설계 -ORM 프레임워크가 중간에서 매핑 -대중적인 언어에는 대부분 ORM 기술이 존재 Object 객체.. JPA 2022. 5. 8. [JPA] Maven JPA 설정 pom.xml persistence.xml 에서 여기에 나는 h2데이터베이스를 사용해서 저렇게 했지만 추후에 oracle이라던디 mysql을 사용하게 된다면 jdbc.driver, user, password, url등을 사용할 DB에 맞춰서 변경만 해주면 된다. JPA에서 hibernate.dialect 라는 속성이 있는데 oracle을 사용할꺼면 Oracle 10g : org.hibernate.dialect.Oracle12cDialect 로 바꾸면 JPQL이라던지 쿼리문이 dialect속성에 써놓은 DB에 맞는 쿼리문으로 바뀌게된다. 하이버네이트는 40가지 이상의 데이터베이스 방언을 지원한다. JPA 2022. 5. 8. 이전 1 2 다음