전체 글 (87) 썸네일형 리스트형 [JPA] EntityManager와 영속성 컨텍스트 그간 Spring Data JPA를 사용하면서, JPA의 정확한 흐름을 모르고 있다는 생각이 들어 기초부터 다시 공부하고 있다. 책은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하였다. 하나의 작업을 위한 일꾼, EntityManager 순수 JPA에서는 어떠한 작업을 하기 위해, EntityManagerFactory, EntityManager라는 것이 존재한다. - EntityManagerFactory 엔티티 매니저를 만들어낸다. 해당 객체를 만드는데 상당한 비용이 소모되므로, 애플리케이션 전체에서 한 개만 만들어 공유하며 사용한다. JPA는 EntityManagerFactory를 생성할 때, Connection Pool 도 생성하는데 이게 가능한 이유는 persistence.xml에 DB .. Spring AOP 회사에서 '스프링 프레임워크 첫걸음' 이라는 책을 소개 받아서 제대로 모르는 것들에 대해서 복습을 진행하고 있다. AOP의 개념에 대해서 혼동하고 있던 부분이 있어 다시금 학습 기록을 남겨두려고 한다. AOP란? AOP(Aspect Oriented Programming)은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 모듈화하는 것을 말하며, 어떤 로직에 공통된 관심사로 작성된 로직이 있다면 Aspect로 모듈화하여 재사용하는 것이다. @Aspect 어노테이션으로 해당 클래스가 Aspect임을 표시하고, @Component를 통해 빈에 등록한다. @Aspect @Component public class UseTimeAop { } 각 클래스 마다 중심적 관심사 (처.. 웹 애플리케이션 빌드와 배포 정리 7월부터 LG의 프로젝트를 주로 수행하는 SI 회사에 취업해서 다니고 있다. 운이 좋게도, 내가 사용했던 기술 스택(Spring Boot, JPA)과 유사하여 기존의 공부들이 도움이 되었다. 이번에 NCP에 세팅된 프로젝트를 EC2로 이관하는 작업에 대한 설명을 들었는데, 빌드부터 배포까지의 과정과 용어들이 확실하게 이해되지 않아서 한 번 정리하고 넘어가보려 한다. 빌드 vs 컴파일 빌드라는 단어에 대해서 막연하게, 프로젝트를 서버에서 실행할 수 있는 파일로 만든다고 이해하고 있었다. 그러면 컴파일도 사람이 볼 수 있는 코드를 기계어로 변환하는 것으로 알고있는데? 무슨 차이가 있는 건지 혼동되었다. 컴파일 (Compile) 사람이 보는 언어(원시 코드)를 컴퓨터 언어(기계어)로 변환하는 것. 컴파일러가 .. 20230625 TIL 6월 한 달 간 기술면접을 여러 번 보았다. 기술 면접을 보면서 느꼈던 부족한 점들에 대해서 회고해보고, 앞으로 어떻게 그 점들을 보완해 나갈지 정리하고자 한다. 웹 기초 지식 Restful API 의 종류에 대해서 설명해보라던지, SSL 이 무엇인지 설명해보라는 질문을 받았는데 답하기가 어려웠다. 그동안 그냥 배웠기에 사용해왔던 것들이었기 때문에 따로 정리할 필요를 느끼지 못했던 것 같다. 웹에 대한 상식들을 기초적인 것부터 다시 정리할 필요가 있을 것 같다. 프로젝트에 사용한 기술에 대한 완벽한 이해 내가 사용했던 프로젝트의 기술들에 대한 완벽한 이해가 필요하다. JWT의 구조에 대해서 설명해보라 했는데, 나는 그 질문을 듣고 Spring Security의 SecurityContext 를 떠올려서 대.. 시간 복잡도 알고리즘과 자료구조의 기초적인 공부를 위해서 노마드 코더의 유튜브를 참고했다. 알고리즘의 성능은 같은 작업을 수행하는데 얼마만큼의 단계가 요구되는지로 판별한다. 선형 검색 알고리즘을 예로 들면, Input Size가 N이면 N 번의 단계가 요구된다. 이를 간단하게 한 단어로 O(N) 이라고 표기할 수 있는데, 이것을 Big O 표기법이라고 한다. Big O 표기법 알고리즘의 시간복잡도를 나타내기 위해서 Big O 표기법을 사용한다. 상수 시간 - O(1) 해당 배열을 출력하기 위해서는 1개의 Step 만 요구된다. 100 개의 Input이 있더라도 동일하다. 해당 함수의 시간복잡도는 constant time (상수 시간) 이며, O(1) 으로 읽는다. 만약 배열의 출력을 2번으로 늘린다면, 2개의 단계가.. JPA 면접 질문 정리 ORM이란? 영속성(Persistence) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 자바는 영속성을 위한 JDBC를 제공한다. 하지만 사용자가 직접 데이터에 접근하기 위한 SQL을 작성하고, 결과값을 다시 dataType으로 바인딩시켜주는 작업을 일일히 수행해야한다는 번거러움이 있다. ORM은 개발자가 직접 JDBC 프로그래밍을 하지 않도록 기능들을 제공해주는 Persistence Framework 종류이다. Object와 DB의 테이블을 매핑하여 데이터를 객체화한다. CRUD관련 메소드를 사용하면 자동으로 SQL이 만들어져 개발자가 반복적인 SQL을 작성할 필요가 없다. 복잡한 쿼리의 경우 JPQL를 혼용하여 사용할 수 있다. Java ORM 기술에 대.. Spring Boot 면접 질문 정리 입사 예정이던 회사보다 좋은 기회가 생겨 새롭게 면접을 준비하게 되었다. Spring 과 JPA에 대한 개념을 다시 한 번 정리하고, 기본 면접 질문에 대비하고자 한다. Spring 과 Spring Boot 의 차이는? Spring은 자바 개발을 편리하게 해주는 오픈소스 프레임워크이다. Ioc, DI, AOP 등을 지원한다. Spring Boot는 기존 Spring 프레임워크에서 요구되었던 복잡한 설정 과정 등을 Auto Contiguration을 통해 자동화할 수 있어 사용자의 편의성을 높였다. Gradle이나 Maven 빌드 파일에 필요한 starter 의존성을 추가해주면, starter가 필요한 의존성jar들을 자동으로 프로젝트에 로드해준다. Spring MVC가 뭔가요? MVC 패턴 기반의 웹 프.. 20230529 TIL 5월 달은 이력서를 수정하고, 채용 공고를 보며 지속적으로 지원했다. 프로젝트 포트폴리오도 따로 작성해두면 좋을 것같아 PPT로 따로 제작해두었다. 주니어 백엔드 개발자 나도관 입니다. 🖐️ Introduce www.notion.so 생각보다 서류 합격률이 높지 않아서 여러 플랫폼에 전부 이력서를 등록하고, 지원했다. 중소기업 채용 공고에도 200명 넘는 인원이 지원하는 것을 보면서 조바심이 났다. 처음에는 서비스 회사만 지원하다가, 나중에는 SI까지 전부 포함해서 이력서를 넣었다. 모든 플랫폼을 합쳐 100군데 넘게 지원한 것 같은데.. 연락이 온 곳은 3곳에 불과했고, 그 중에 유일하게 면접을 갔던 기업에 합격하여 6월부터 웹개발자로 커리어를 다시 시작하게 되었다. SI 회사이지만 체계가 잡혀있는 것.. 이전 1 2 3 4 5 6 ··· 11 다음