일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- spring boot
- HTTP
- Spring
- 웹 서버
- spring batch
- ORM
- computer science
- Java
- 영속성 컨텍스트
- virtualization
- Container
- 백엔드
- web server
- 스프링 부트
- 스프링 배치
- 스프링 시큐리티
- vm
- 컨테이너
- mysql
- CI/CD
- 스프링
- Spring Security
- JPA
- 도커
- 데이터베이스
- spring cloud
- 가상화
- 자바
- 배포
- CS
- Today
- Total
목록전체 글 (149)
개발 일기

객체의 참조와 테이블의 외래 키를 어떻게 매핑하는가! 연관관계가 필요한 이유 ex) 회원과 팀이 있을때 회원은 하나의 팀에만 소속될 수 있으며 회원과 팀은 다대일 관계(N:1)다. 우선, 참조가 아닌 객체를 테이블에 맞추어 모델링한다고 가정해보자. 즉, 연관관계가 없는 객체이다. 관계형 데이터베이스를 다뤄본 개발자라면 위의 그림을 이해하는데는 그닥 어렵지 않을 것이다. 하나의 팀에 여러명의 맴버가 포함될 수 있기 때문에 member테이블에서 FK로 team_id를 가지는 것이다. 이러한 테이블을 바탕으로 객체에 맞게 해보면 Member객체가 teamId(테이블에서의 외래키)값을 그대로 들고있는 것이다. //팀 저장 Team team = new Team(); team.setName("TeamA"); em...

엔티티 매핑은 크게 4가지로 볼 수 있다. 1. 객체와 테이블 매핑 (@Entity, @Table) 2. 필드와 컬럼 매핑 (@Column) 3. 기본 키 매핑 (@Id) 4. 연관관계 매핑 (@ManyToOne, @JoinColumn) 이중 1,2,3을 이번 섹션에서 다루고 4번을 다음 섹션에서 다룰 것이다. 객체와 테이블 매핑 (@Entity, @Table) @Entity 해당 어노테이션이 붙은 클래스는 JPA가 관리하며 그것을 엔티티라고 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의 - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - final 클래스, enum, interface, inner 클래스 사용 X - 저장할 필드에 final..

영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 위의 그림과 같이 EntityManagerFactory가 유저의 요청이 들어올때마다 EntityManager를 생성한고 EntityManger들은 내부적으로 데이터베이스 커넥션을 사용해서 DB를 사용하게 된다. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 중 하나로 EntityManager.persist(entity);는 DB에 저장한다는 뜻이아니라 사실 영속성 컨텍스트에 저장한다는 의미이다. 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않는다. 엔티티의 생명주기 //객체를 생성한 상태(비영속(new/trasient): 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태) Member member = new Member(); member.se..

SQL 중심적인 개발의 문제점 데이터베이스는 대게 관계형 DB를 활용한다. 즉, 실무에서 객체를 관계형 DB에 보관하고 관리한다. 이 과정에서 CRUD(CREATE, READ, UPDATE, DELETE)를 하는 과정에서 수많은 SQL이 쓰일 것이다. 이것이 바로 "SQL 중심적 개발"이다. 만약, 요구사항 변경으로 Member 객체에 tel이라는 연락처 필드를 추가해야 하는 경우 기존 INSERT, SELECT 그리고 UPDATE 쿼리문 들에 TEL이라는 필드를 찾아가서 하나하나 추가해주어야 하기 때문에 상당히 효율적이지 않다. 실무에서는 8~90% 관계형 데이트베이스를 채택하고 NoSQL을 보조적으로 쓸텐데 그렇다면 객체를 관계형 데이터베이스로 다루게 되는데 이때 둘 사이에 차이가 존재한다. 하나씩 ..

전 게시글에서POJO를 달성하기 위한 3가지 스프링 핵심 특징인 IoC/DI, AOP, PSA 중 IoC/DI에 대해 알아봤었다. 이번 게시글에서는 나머지 AOP에 대해서 알아보자관점 지향 프로그래밍 (Aspect Oriented Programming - AOP)AOP 도입 배경( feat. 횡단 관심사)과 AOP 개념AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 횡단 관심사(cross-cutting concerns)를 다루는 프로그래밍 패러다임이다.이때 횡단 관심사란 여러 모듈이나 기능에서 공통적으로 나타나는 관심사를 말하며, 로깅, 보안, 트랜잭션 관리 등이 여기에 해당한다.AOP를 사용하면 이러한 공통된 로직을 핵심 비즈니스 로직에서 분리하여 관리할 수 있어 ..

이전 게시글에서는 스프링 삼각형과 POJO에 대해서 알아봤고 POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 파악한 후 POJO에 대해서 정리했었다. 이제 POJO가 뭔지 알았으니 이제 어떠한 특징들을 통해서 이 POJO를 달성할 수 있느지 그중 첫번째로 IoC/DI에 대해 공부해보고자 한다. Spring Framework는 객체의 생성부터 소멸까지, 또한 그 사이의 여러 생명주기 단계들을 Spring이 관리하며 필요할 때마다 Spring 컨테이너에서 객체를 꺼내어 사용할 수 있는 구조라고 했었는데 이때, 이 객체를 스프링 빈(Spring Bean)이라고 한다. (추후에 이 스프링 IoC컨테이너와 스프링 빈(객체)에 대해서 더 자세하게 다뤄 보겠다.) 5분 개발이라는 분의 영상을..

이전 게시글에서 스프링 생태계에 대해서 알아봤는데 Spring Framework의 3대 특징인 Spring 삼각형에 대해서 공부해보고자 한다. Spring 삼각형 위 사진이 바로 유명한 Spring 삼각형이다. Spring의 핵심 특징인 3대 특징이다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. 이제 하나씩 알아보자 POJO(Plain Old Java Object) 기반의 구성 우선 POJO부터 알아보자. POJO는 이전 게시글 스프링의 등장 배경에서 마틴 파울러는 EJB에 오래된 방식의 "오래된 방식의 간단한 자바 오브젝트로 돌아가자"라는 말이 기원이라고 했었다. 조금 더 자세한 일화를 봤는데 마틴 파울러가 2000년에 콘퍼런스 발표를 준비하다가 만들어낸 용어인..

스프링 생태계를 공부하다가 스프링 부트의 기능 중에 내장 서버라는 것이 있었는데 웹 애플리케이션을 실행하기 위해 필요한 Tomcat, Jetty등과 같은 웹 어플리케이션 서버 (WAS - Web Application Server)를 애플리케이션 내부에 포함하는 기능이다. 스프링 부트는 이러한 내장 서버를 통해 별도로 서버를 설치하고 구성하는 과정 없이, 애플리케이션 빌드 파일(.jar) 실행 만으로 웹 서비스를 배포할 수 있는 환경을 제공하게 된다고 했다. 이때 웹 어플리케이션 서버에 대해 잘 알지 못해서 웹 서버와 다른 것인지 정리해보고자 한다.또한 공부를 하면서 내가 이전에 창업 팀에서 활동하면서 배포했던 방식이 얼마나 단순하고 일차원적인 배포였는지를 알 수 있었다.나의 첫 배포는?전체적인 그..