Spring Boot에서 Https 적용하기
·
백엔드
먼저 내 배포 환경을 설명하자면spring boot 프로젝트를 AWS ec2 서버에 배포Nginx를 리버스 프록시로 구성Docker 및 Github action을 이용해 ci/cd 파이프라인을 구축이번 프로젝트 PM의 요청..으로 개발 설계 단계에서 백엔드에 https 설정을 하려고 한다.HTTP와 HTTPSHTTP(Hypertext Transfer Protocol)는 웹 브라우저-웹 서버가 데이터를 주고받기 위해 사용하는 기본 통신 규약사용자가 웹 사이트를 방문하면 브라우저가 서버에 http 요청을 보내고 서버는 이에 대한 응답을 암호화되지 않은 텍스트로 전달함 HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 보안이 강화된 버전으로 데이터를 주고 받을 때 암호화..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 07. 고급 매핑
·
백엔드/Spring
상속관계 매핑원래 관계형 데이터베이스는 상속 관계가 없다.하지만 슈퍼타입-서브타입 관계라는 모델링 기법이 객체 상속과 유사하며상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입-서브타입 관계를 매핑하는 것을 뜻한다.각각 테이블로 변환 → 조인 전략통합 테이블로 변환 → 단일 테이블 전략서브타입 테이블로 변환 → 구현 클래스마다 테이블 전략3가지 중 어떤 걸로 구현하든 JPA에선 자동적으로 다 매핑을 지원한다. 주요 어노테이션@Inheritance(strategy=InheritanceType.XXX)JOINED: 조인 전략SINGLE_TABLE: 단일 테이블 전략TABLE_PER_CLASS: 구현 클래스마다 테이블 전략@DiscriminatorColumn(name=“DTYPE”)@Discriminator..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 06. 다양한 연관관계 매핑
·
백엔드/Spring
다양한 연관관계 매핑연관관계 매핑을 어떻게 할 지 헷갈릴때는 대칭성을 생각해보면 좋다.예를 들어 일대다의 반대는 다대일인 것이다. 추가적으로, 다대다는 실무에서 쓰면 안된다! 이유는 뒤에서 설명하겠다.다대일 관계를 가장 많이 쓴다.다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany단방향, 양방향외래키는 한 쪽에만 세팅을 하면 양쪽 조인이 가능하기에 테이블은 방향이라는 개념이 없다. 하지만 객체는 방향 존재한다. 참조용 필드가 있는 쪽으로만 참조가 가능하다.따라서 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향이라고 보통 말하는데사실 양방향이라는 건 존재하지 않는다. 이해하기 쉬우라고 '양방향' 이라는 말이 있는 것이다.단방향 2개를 양방향처럼..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 05. 연관관계 매핑 기초
·
백엔드/Spring
양방향 연관관계와 연관관계 주인테이블과 1대1 매핑으로 엔티티를 설계하면 객체 참조가 아니라 외래키 값을 그대로 갖게 된다.Team team = new Team();team.setName("Team 1");em.persist(team);Member member = new Member();member.setUsername("member 1");member.setTeamId(team.getId());em.persist(member);tx.commit();이전에는 멤버를 직접 찾았지만이렇게 외래키가 아닌 객체 자체를 가지도록 엔티티를 설계하면member.setTeam(team)을 호출 시 Member객체의 team필드에 Team객체가 할당된다. 이때 Member 엔티티가 데이터베이스에 저장될 때 JPA는 자동..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 04. 엔티티 매핑
·
백엔드/Spring
엔티티 매핑객체와 테이블 매핑: @Entity, @Table@Entity@Entity가 붙은 클래스는 JPA가 관리한다. 주의기본 생성자 필수저장할 필드에 final 사용 안됨 속성: nameJPA에서 사용할 엔티티 이름을 지정한다.기본값은 클래스 이름을 그대로 사용하는 것이다. 가급적 기본값을 쓴다. @Table엔티티와 매핑할 테이블을 지정한다.속성기능사용 예시name테이블의 이름을 지정@Table(name = "users")schema테이블이 위치할 데이터베이스 스키마를 지정@Table(name = "users", schema = "public")catalog테이블이 위치할 데이터베이스 카탈로그를 지정@Table(name = "users", catalog = "mycatalog")uniqueConst..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 03. 영속성 관리
·
백엔드/Spring
영속성 컨텍스트 개념데이터의 영속성이란, 데이터가 프로그램이나 프로세스의 실행이 종료되어도 사라지지 않고 지속적으로 보존되는 특성이다. JPA에서 영속성 컨텍스트는 "엔티티를 영구 저장하는 환경"이라는 뜻으로 데이터의 영속성을 관리하는 데 핵심적인 역할을 수행한다.영속성 컨텍스트는 논리적인 개념엔티티 매니저를 통해서 영속성 컨텍스트에 접근엔티티의 생명주기비영속영속성 컨텍스트와 전혀 관계가 없는 새로운 상태//객체를 생성한 상태(비영속)Member member = new Member();member.setId("member1");member.setUsername("회원1");영속영속성 컨텍스트에 관리되는 상태//객체를 생성한 상태(비영속)Member member = new Member();member.se..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 02. JPA 시작
·
백엔드/Spring
실습용 프로젝트를 만들어보는 시간이다.H2 데이터베이스실습용으로 사용하기에 좋은 가벼운 DB이다.웹용 쿼리툴을 제공하기에 데이터를 빠르게 확인할 수 있다.https://www.h2database.com/html/main.html H2 Database EngineH2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Sup..
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 01. JPA 소개
·
백엔드/Spring
교내 해커톤과 동아리 프로젝트에서 JPA를 이용하여 서버 개발을 진행하였다.JPA가 뭔지도 모르고 냅다 개발부터 했기에..어려움도 많았고 배운것도 많았지만! 김영한님 강의를 들으며 개념을 천천히 정리해보려 한다. 지금 시대는 객체를 관계형 DB에 관리JDBC를 사용해보면 SQL문을 정말.정말정말 많이 써야 한다는 것을 알 수 있다.자바 객체 ↔ SQL여기에서 오는 패러다임의 불일치는 개발자를 'SQL 매퍼'로 만들어 버린다. 갑자기 기획자님이 멀쩡한 class에 필드를 하나 추가해달라고 요청한다고 치자모든 SQL문에 필드를 넣어야 하는...참 귀찮고 힘든 불상사가 일어나게 된다. 객체를 자바 컬렉션에 저장하면 어떨까?갑자기 웬 컬렉션인가 싶겠지만 이게 참 편리할 것 같다는 걸 알게된다.  JDBC에서 사..