전체보기
[JPA] 기본 키 매핑
@Id @GeneratedValue 기본 키 매핑 방법 직접 할당: @Id만 사용 자동 생성(@GeneratedValue) IDENTITY: 데이터베이스에 위임, Mysql SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE @SequenceGenerator 필요 TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 @TableGenerator 필요 AUTO: 방언에 따라 자동 지정, 기본값 IDENTITY 전략 - 특징 기본 키 생성을 데이터베이스에 위임한다. 주로 Mysql, PostgreSQL, SQL Server, DB2에서 사용(예: MySQL의 AUTO_ INCREMENT) JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행한다. AUTO_INCREMENT는 데이터베..
[JPA] 객체와 테이블 매핑
객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 주의 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) 저장할 필드에 final 사용 X @Entity 속성 관리 ex) @Entity (name=?) JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용한다. 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용 catalog 데이터베이스 ca..
![[JPA] 영속성 컨텍스트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbtm94v%2FbtrG23Whpud%2FAAAAAAAAAAAAAAAAAAAAAEgCcRcq8X6ZtFCALs4PasK_smWrbkugXnfrbtuWRiKJ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DHEHgUhYHw6Gxb7m7Iv3a4u0y9qw%253D)
[JPA] 영속성 컨텍스트
JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 “엔티티를 영구 저장하는 환경”이라는 뜻 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) 영속성 컨텍스트에 관리되는 상태 준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) 삭제된 상태 Code 영속된다고 해서 DB에 저장되는 것이 아니라. commit을 할 때 저장이 된다. 영속성 컨텍스트의 장점 1차 캐시 동일성(identity)보장 트랜잭션을 지원하는 쓰기 지연 (tra..

JPA(Java Persisitence API) 기본 개념
JPA(Java persistence API) JPA를 통해 개발자는 애플리케이션에서 사용할 수 있도록 관계형 데이터베이스 엔티티의 객체 지향 버전을 작성할 수 있다. 스프링에서 제공하는 것이 아닌 자바 ORM 기술에 대한 표준 명세이다. JPA는 라이브러리가 아니라 인터페이스이다. 자바 클래스 - DB테이블 매핑 ORM→ Object-relational mapping(객체 관계 매핑) 객체와 관계형 데이터베이스 각각의 설계를 진행하고 ORM 프레임워크가 중간에서 매핑을 한다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. JPA 구동 과정 JPA는 애플리케이션과 JDBC사이에서 동작한다. JPA 동작 과정 - save JPA 동작 과정 - find JPA를 사용해야하는 이유는? 1. sql 중심적인..
좋은 객체지향 설계의 5가지 원칙(SOLID)
SOLID SRP 단일 책임 원칙(Single responsibility principle) 하나의 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따르는 것 OCP 개방-폐쇄 원칙(Open/closed principle) 소프트웨어 요소는 확장에는 허용하나 변경에는 불허해야 한다. 다형성 활용 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 OCP 문제점 구현 객체를 변경하려면 클라이언트 코드를 변경해야한다. - 다형성을 사용했지만 OCP 원칙이 깨진다 → 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필..