전체보기

    [JPA] 객체와 테이블 매핑

    객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 주의 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) 저장할 필드에 final 사용 X @Entity 속성 관리 ex) @Entity (name=?) JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용한다. 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용 catalog 데이터베이스 ca..

    [JPA] 영속성 컨텍스트

    [JPA] 영속성 컨텍스트

    JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 “엔티티를 영구 저장하는 환경”이라는 뜻 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) 영속성 컨텍스트에 관리되는 상태 준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) 삭제된 상태 Code 영속된다고 해서 DB에 저장되는 것이 아니라. commit을 할 때 저장이 된다. 영속성 컨텍스트의 장점 1차 캐시 동일성(identity)보장 트랜잭션을 지원하는 쓰기 지연 (tra..

    JPA(Java Persisitence API) 기본 개념

    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 원칙이 깨진다 → 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필..

    CI/CD와 형상관리

    CI/CD와 형상관리

    CI/CD CI ⇒ Continuous Intrgration (지속적 통합) CD ⇒ Continous Delivery (지속적 전달) CD ⇒ Continuous deployment (지속적 배포) Continuous Intrgration 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미 개발코드를 통합할 때 문제점을 해결하고, 자동화시켜 지속적으로 유지시키는 방법 코드를 커밋만 치면 자동으로 빌드, 통합을 하고, 테스트를 하는 과정을 의미 Continous Delivery / Continuous Deployment 지속적인 서비스 제공 / 지속적인 배포 어플리케이션을 항상 신뢰가능한 수준으로 배포 될 수 있도록 지속적으로 관리 CI가 이루어지고 난 후에 우영환경까지 배포를 수행하여, 실제 사용자가..