본문 바로가기
728x90
반응형

전체 글596

[JPA/java] 연관관계 매핑 (단방향, 양방향, 객체, 테이블, 기본키, 외래키 등) 연관 관계에 대한 예를 들기 위해서, 하나의 예를 들어보자. 1) 회원과 팀이 있는데, 2) 회원은 하나의 팀에만 소속될 수 있고, 3) 회원과 팀은 N:1관계이다. 연관 관계가 없는 객체를 테이블에 맞춰 모델링을 하면 아래와 같이 표현할 수 있다. 이것을 소스코드로 표현하면 아래와 같다. (Getter and Setter 생략) Member.java @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; } Team.java @Entity public class Team .. 2023. 1. 25.
[H2 Database / Database] 새로운 Repository 생성 후 귀찮아서 비밀번호 없애고 싶을 때 Create a new database 클릭 이렇게 뜨는 데 대충 비번 적고 create 하면 repository 명이 해당 디렉토리 내에 중복되지만 않으면 그냥 생성된다. 실행하면 위처럼 뜨는데 새로 만든 repository 명을 입력하고 ID, PW 입력하고 연결 클릭 SQL 문 입력칸에 ALTER USER sa(사용자가 입력했던 사용자 명) SET PASSWORD ''(공란) 하면 그냥 하이패스로 로그인이 가능하다. 2023. 1. 22.
[JPA/Java] 엔티티 매핑 (객체, 테이블, 필드, 컬럼, 기본 키 등) 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA가 관리하고, 이를 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 필수로 붙인다. ※ 주의 → 기본 생성자를 필수로 한다. (파라미터가 없는 public 또는 protected 생성자) → final 클래스, enum, interface, inner 클래스 사용하지 않음 → 저장할 필드에 final 사용하지 않음 @Entity 속성 정리 - 속성 : name : JPA에서 사용할 엔티티 이름을 지정한다. : 기본값 - 클래스 이름을 그대로 사용(예 : Me.. 2023. 1. 22.
[JPA/JAVA] 플러시 & 준영속 상태 플러시란? : 영속성 컨텍스트의 변경내용을 데이터베이스에 반영 플러시가 발생하는 때는? - 변경을 감지할 때 - 수정된 엔티티를 쓰기 지연 SQL 저장소에 등록할 때 - 쓰기 지연 SQL 저장소의 쿼리(등록, 수정, 삭제 쿼리)를 데이터베이스에 전송할 때 영속성 컨텍스트를 플러시하는 방법은 3가지가 있는데 - em.flush() -- 직접 호출 - 트랜잭션 커밋 -- 플러시를 자동 호출 - JPQL 쿼리 실행 -- 플러시를 자동 호출 가 있다. 직접 호출하는 em.flush()의 경우 Member member = em.find(Member.class, 150L); member.setName("ZZZZ"); em.flush(); System.out.println("=================="); 원.. 2023. 1. 12.
[JPA/JAVA] 영속성 컨텍스트 영속성 컨텍스트는 JPA에서 나오는 개념이다 JPA를 이해하기 위해서는 가장 중요한 2가지 개념이 있는데 하나는 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 두 번째는 바로 영속성 컨텍스트가 있다. 영속성 컨텍스트를 이해하는 것이 실제로 JPA가 내부에서 실제로 어떻게 동작하는지 이해하는데 가장 큰 중요한 대목이 될 것이다. 영속성 컨텍스트를 이해하기 위해서는 엔티티의 영속을 관리하는 엔티티 매니저와 엔티티 매니저를 관리하는 엔티티 매니저 팩토리를 이해할 필요가 있다. 엔티티 매니저 팩토리는 들어오는 요청에 따라 엔티티 매니저를 생성한다. 그리고 엔티티 매니저는 영속을 위해 데이터베이스와 연결하기 전, 커넥션 풀을 사용하여 영속을 준비한다 (persist) 영속성 .. 2023. 1. 11.
[Trouble shooting / JPA / H2] JPA hibernate.properties not found / Could not load requested class : org.h2.Driver JPA를 실습해보기 위해서, Maven project를 만들고 pom.xml에 4.0.0 org.example ex1-hello-jpa 1.0-SNAPSHOT org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 test 11 11 와 같이 JPA Hibernate와 H2 데이터베이스 dependency를 추가하였다. 그리고 src/main/resource/METE-INF 디렉토리에 persistence.xml를 생성하여 H2 데이터베이스 정보를 넣어주었다. main 함수를 만들어서 EntityManagerFactory를 호출하여 정상적으로 작동하는지 확인해봤다. package hellojpa; import javax.p.. 2022. 11. 29.
728x90
반응형