| 엔티티 상태 JPA에서는 엔티티의 상태를 다음과 같이 나눈 후 사용자가 요청한 사항에 맞추어 관리하게 됩니다. Transient : JPA가 엔티티를 나타내는 객체에 대한 정보를 모르는 상태 Persistent : JPA가 엔티티를 관리 중인 상태 (1차 캐시, Dirty Checking, Write Behind, ..) Dirty Checking : 객체의 변경사항을 계속 감지 Write Behind : 객체의상태변화을 데이터베이스에 최대한 늦게, 필요한 시점에 반영한다는것이다. Detached : JPA가 더이상 엔티티를 관리하지 않는 상태 Removed : JPA가 엔티티를 관리하는 상태에서 이 엔티티를 삭제하기로한 상태 save를 했다고 바로 DB에 쿼리를 날리는 것은 아니다. Casade 옵..
| @ManyToOne package org.kyhslam.jpa; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Study { @Id @GeneratedValue private Long id; private String name; // 하나의 계정으로 여러 study를 만들 수 있기 때문에 MaytoOne이다. // (뒤에께 해당 컬럼에 해당) // 햇갈릴 경우에는 앞쪽이 해당클래스(Study)이고 뒤쪽이 해당 컬럼(Account) @ManyToOne private ..
학습 Entity 생성 DB 저장 Docker의 테이블 확인 4. Account package org.kyhslam.jpa; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Account { @Id @GeneratedValue private long id; private String username; private String password; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getUsername()..
@Entity 엔티티는 자바에서 객체지향적인 코드를 작성할 때 네이밍된 DB와 대응된느 클래스의 이름이다. 보통 클래스와 같은 이름을 사용하기 때문에 값을 변경하지 않는다. 값을변경할 때는 @Entity(name="myAcount") 와 같은 형식의 어노테이션을 붙이면 된다. @Table 테이블은 RDBMS 안의 릴레이션 스키마에 대응되는 이름을 나타낸다. @Table(name="myAcount") 같은 형식의 어노테이션을 붙여서 엔티티와 대응되는 테이블명을 명시할 수 있다. @Id 엔티티의 주키를 매핑할 때 사용한다. 자바의 모든 Primtive 타입과 그 래퍼타입을 사용할 수 있다. @GeneratedValue 주키의 생성 방법을 매핑하는 어노테이션이다. 생성전략과 생성기를 설정할 수 있다. 기본적으..
ORM (Object Relational Mapping) ORM은 애플리케이션의 클래스와 SQL 데이터베이스의 테이블 사이의 맵핑 정보를 기술한 메타데이터를 사용하여, 자바 애플리케이션의 객체를 SQL 데이터베이스의 테이블에 자동으로 영속화 해주는 기술이다. 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다 ORM프레임워크가 중간에서 매핑해준다 ORM은 객체와 RDB 두 기둥 위에 있는 기술이다. JPA(Java Persistent API) JPA(Java Persistent API)는 자바의 영속성 관리와 ORM을 위한 표준 기술이다. 기존 EJB ORM이던 Entity Bean을 JPA라 바꿔 체계화한 기술이다. ORM(Object Relational Mapping) 이란..