Java , Spring/Jpa7 [JPA] JPA란? ( ORM, Hibernate, Spring Data JPA) JPA란? JPA(Java Persistence API)는 자바에서 사용하는 ORM(Object Relational Mapping) 기술 표준이다. 자바 애플리케이션과 관계형 데이터베이스 사이의 데이터 영속성을 관리하기 위한 표준화된 인터페이스를 제공하는 기술이다. 즉, JPA는 인터페이스이지 특정 기능을 제공하는 라이브러리가 아니다. 그러면 JPA를 어떻게 사용해야하는것일까? JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 사용해야한다. 대표적인 JPA 구현체는 Hibernate, OpenJPA, EclipseLink등이 있다. ORM 이란? 그러면 ORM이란 무엇일까? ORM 은 Object-Relational Mapping 의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술이.. 2024. 1. 11. [JPA] 상속관계 매핑 상속관계 매핑객체에는 상속의 개념이 존재하지만 관계형 데이터베이스에는 상속 관계가 존재하지 않는다.하지만, 슈퍼타입, 서브타입 관계가 객체의 상속 개념과 유사하다. 슈퍼타입, 서브타입 관계란?다음과 같은 관계가 슈퍼타입, 서브타입 관계이다. 해당 관계를 table로 나타낼때 @Inheritance(strategy= InheritanceType.XXX)를 이용한 3가지 방법이 존재한다,JOINED : 조인 전략SINGLE_TABLE : 단일 테이블 전략TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 조인전략 @Inheritance(strategy= InheritanceType. JOINED )정규화가 되어있다.데이터를 저장할때 ITEM과 ALBUM 모두에 쿼리가 들어간다.데이터를 찾을때(f.. 2023. 11. 1. [JPA] 연관관계 다대일 [N:1] 일대다 [1:N] 일대일 [1:1] 다대다 [N:N] 단방향과 양방향 Table의 경우 외래키 하나로 양쪽 조인이 가능하다. 즉, 방향이라는 개념이 없다. 하지만 객체의 경우 참조용 필드가 있는쪽으로만 참조 가능하다 (이때 한쪽만 참조하면 단방향이다) 다대일 [N:1] DB기준 외래키가 있는 table이 "다" 이다. 일대다 [1:N] 다대일을 뒤집은 모양으로 다대일과 마찬가지로 "다"에 외래키가 있다. 주의사항 : "일" 의 객체에 변경점이 있을때 "다"의 외래키가 변경된다. JoinColumn이 "일"에 있음 (OneToMany) ex) team을 건드렸는데 member table에 업데이트 쿼리가 발생한다. 즉 객체와 table의 차이로 인해 문제(?)가 발생한다 -> 다대일을 사.. 2023. 10. 8. [JPA] 엔티티 매핑 데이터 베이스 스키마 자동생성 create : 기존 테이블 삭제 후 다시 생성 create-drop : create와 같지만 종료시점에 테이블을 drop한다 update : 변경 부분만 적용 validate : 정상 매핑 되었는지 확인 none : 사용안함 주의사항 - 운영장비에는 절대 create(create-drop), update 사용 금지 @GenertedValue 기본키를 DB에서 만들어준다. (strategy = "GenerationType.Auto")를 사용 영속성 컨텍스트에서 기본키가 필요한데 DB에 들어가기전에는 null 상태이다 그래서 em.persist(entity)를 할때 insert 쿼리가 날라간다. (즉, tx.commit()이 되기전에 쿼리가 날라간다) 양방향 연관관계 tabl.. 2023. 10. 6. [JPA] 영속성 관리 - 영속성 컨텍스트 JPA의 중요점은 2가지가 있다. 1. JPA는 객체와 관계형 데이터베이스를 매핑한다 (ORM - Object Relational Mapping) 2. 영속성 컨텍스트 영속성 컨텍스트 영속성 컨텍스트란 Entity를 영구적으로 저장하는 환경이다, 1. 영속성 컨텍스트는 논리적인 개념이다. 2. EntityManager를 통해서 영속성 컨텍스트에 접근 할 수 있다. em.persist(member); 위 코드는 데이터베이스에 member를 저장하는것이 아니다. member 객체를 영속성 컨텍스트에 저장하는 코드이다. Entity의 생명주기 Member member = new Member(); // 비영속 em.persist(member); // 영속 em.detach(member); // 준영속 em.re.. 2023. 10. 3. [JPA] JPA 시작하기 JPA 시작하기 EntityManagerFactory를 만들고 EntityManagerFactory에서 EntityManager를 만든다, EntityManagerFactory는 하나, EntityManager는 고객의 요청이 올떄마다 생성하고 사용후 버린다. (em은 쓰레드간의 공유 X) EntityManagerFactory emf = Persistence.createEntityManagerFactory("example"); EntityManager em = emf.createEntityManager(); em.close(); emf.close(); 객체 저장하기 Member member = new Member(); em.persist(member); EntityManager의 persist를 통해서 .. 2023. 10. 3. Entity, DTO, DAO Entity Entity는 간단하게 DB의 테이블이라고 생각하면된다. 테이블과 1대1 대응이고, table의 칼럼을 필드로 가진다. @Id를 통해 기본키를 설정할 수있고 @Column을 통해 이름을 설정할 수 있다. @Entity @Table(name = "place") @Getter @Setter public class PlaceEntity { @Id private Long id; private int type; private String location; private String name; private String address; @Column(name="road_address") private String roadAddress; private String phone; private String .. 2023. 8. 20. 이전 1 다음