728x90
반응형

분류 전체보기 81

ICT 인턴십 - 지원 회고

지원 동기본인은 SpringBoot 프레임워크를 이용한 BackEnd 개발을 위주로 해왔습니다. 그리고 기본적인 BackEnd API Server를 만들기 위해 AWS의 서비스를 사용하여 Infra 구축을 진행한 경험이 다수 있었습니다.하지만 API Server를 만들고, Spring Security, JPA 등 다양한 모듈들을 사용한 경험이 있을 뿐 Infra에 대한 구체적인 실습은 부족했습니다. 흥미만 어느정도 있는 상태였고, MSA, K8S, prometheus, grafana 등 다양한 오픈소스를 사용하는 경험을 갖추지는 못 하였습니다.그런 상황에서 ICT 인턴십에 SRE라는 직무를 처음으로 접하게 되었고, 검색하며 직무에 대해 알아가면서 더욱 매력을 느끼게 되었습니다.학부생 입장에서 실제 운영하..

Ne(o)rdinary Hackerthon 회고

행사 개요 Ne(o)rdinary Hackerthon이란 UMC 14기, CMC 5기의 크루원들이 모여 1박 2일간 주제를 갖고 개발을 진행하는 해커톤이다. 다른 프로젝트도 진행하고 있고, 그 외에도 일정이 있어 사실 해커톤 참여를 망설였다. 하루 밤 새는 것이 타격이 크기 때문에 주어진 일을 못 할까 걱정이 앞섰기 때문이다. 또한, 제대로된 해커톤이 사실상 처음이라 짧은 시간 내에 개발할 수 있을지, 팀원분들에게 폐를 끼치진 않을지 걱정했다. 하지만 짧은 시간동안 좋은 팀원분들과 개발에 몰두하며 많은 것을 배울 수 있었고, 짧은 시간이지만 해커톤에 몰입한 결과 만족스러운 결과도 얻을 수 있었다! 주제 뉴진스(New Jeans)의 노래 제목을 앱 이름으로 하여 서비스 구상 “뉴진스의 하입보이요”는 202..

연관관계 매핑(양방향)

✅ 양방향 매핑이란? 객체의 연관관계 중 하나인 양방향 매핑은, 사실상 단방향 매핑이 두번 이루어진 것이다. 즉, 개념적으로 두 개의 단방향 매핑을 추상적으로 양방향 매핑이라 칭하는 것이다. ✅ 양방향 연관관계 매핑의 필요성 테이블과 객체를 비교해보자. 테이블에서는 외래 키 하나로 두 테이블의 연관관계를 확인할 수 있다. 외래 키를 가지고 조인하면 두 테이블간 데이터의 결합과 접근성이 자유롭다. 즉, 외래 키 하나만으로 한 컬럼의 연관된 데이터를 획득할 수 있다. 하지만 객체에서는? 객체를 탐방하려면 참조가 쌍방으로 존재해야 한다. 참조가 양방향으로 존재해야 참조와 역참조가 가능한 구조라는 것이다. 이런 패러다임의 차이를 극복하기 위해 양방향 매핑을 한다. 하지만, 엔티티 연관관계를 설정할 때 우선 단방..

Dev/Spring 2023.11.21

연관관계 매핑(단방향)

✅ 연관관계 매핑의 필요성 모델링의 두 방식의 차이점을 비교하며 연관관계의 필요성을 알아보자. ✅ 테이블 중심 모델링 ![Untitled] 테이블 연관관계에 맞추어 객체를 모델링 해보자 🌱 엔티티 매핑 참조 대신에 외래키를 그대로 사용하여 다음과 같이 Member 와 Team 을 작성할 수 있다. @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private Long teamId; ... } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; ... } 🌱 엔티티 다루기 위와 같이 작성..

Dev/Spring 2023.11.21

변경 감지(Dirty Checking)

✅ 영속성 컨텍스트란 ‘엔티티를 영구히 저장하는 환경’이라는 뜻 EntityManager.persist(entity); 하지만 이는 논리적인 개념이다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있다. 아래의 예를 통해 영속성 컨텍스트 내에서 변경 감지(Dirty Checking)를 하는 법을 알아보자. ✅ 엔티티 수정 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // 단일 EntityManger를 생성한다. EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); // 트랜잭션 시작한다. (영속성 컨텍..

Dev/Spring 2023.11.20

JPA를 왜 쓸까?

✅ JPA? Java Persistence API 자바 진영의 ORM 기술의 표준 ORM이란?즉, 객체 관계 매핑이다.ORM이라는 프레임워크가 중간에서 매핑하는 것 대중적인 언어에서는 대부분 ORM기술이 존재하여, 데이터베이스와 어플리케이션 간의 인터페이스를 보장한다. (ex. python sqlalchemy) 객체는 객체대로 설계 / 관계형 데이터베이스는 관계형 데이터베이스대로 설계 Object-Relational Mapping ✅ JPA의 동작 어플리케이션과 JDBC 사이에서 동작한다. ✅ 표준 명세 JPA는 기본적으로 인터페이스의 모음이다. 이 JPA 표준 명세를 구현한 3가지 구현체가 존재한다. Hibernate EclipseLink DataNucleus ✅ JPA 사용 이유? SQL 중심적인 개..

Dev/Spring 2023.11.20

영속성 컨텍스트란

Overview JPA의 '영속성 컨텍스트'라는 논리적인 개념에 대해 다룬다. JPA의 2요소 JPA에서 가장 중요한 2가지라 하면, 객체와 RDBMS를 매핑하는 연관관계 영속성 컨텍스트 이 두가지가 있다. 웹 어플리케이션에서 사용자는 EntityManager를 할당받고, Database에 접근하기 위해 EntityManager로 엔티티를 영속성 컨텍스트에 집어 넣는다. 즉, 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 일반적으로 EntityManager.persist(entity);구문을 통해 엔티티는 영속성 컨텍스트에 들어간다. 엔티티의 생명주기 비영속 영속성 컨텍스트와 연관이 없는 상태. 그저 생성만 된 객체를 의미한다. 영속 영속성 컨텍스트가 관리하는 객체 준영속 영..

Dev/Spring 2023.11.20

Ch06. API URL, Project Configuration

Overview EndPoint와 Request/Reply 데이터를 설계하자. 협업을 편리하게 진행하기 위한 API 명세서를 작성하자. API란 Appliation Programming Interface(API) 즉, Application을 Programming할 때 사용되는 Interface를 말한다. 소프트웨어 사이에 복잡한 것들을 감추고, 추상화를 통해 손 쉽게 마이그레이션 혹은 응용을 할 수 있게끔 하는 도구의 일종이다. REST API 웹 어플리케이션에서는, REST API를 자주 사용한다. REST API란 말 그대로 RESTful한 API를 일컫는다. REST Representational State Transfer 의 약자로, 자원을 이름으로 구별하여 자원의 상태(state)를 주고 받는 ..

Ch05. SQL

Overview 요구사항에 맞게 쿼리를 작성하는 방법에 대해 고민하고, 이를 통해 쿼리를 만들어보자. Entity-Relationship Diagram Requirements 진행 중/완료 미션을 모아서 보는 페이지 SELECT * FROM Mission WHERE mission_status = 'IN_PROGRESS' OR mission_status = 'COMPLETED';한 유저에게 할당된 미션에 대해, 진행 중 혹은 진행 완료된 미션을 모아서 볼 수 있는 쿼리 리뷰 작성하는 페이지 INSERT INTO Review (grade, title, content, reply, visitDate, store_id, user_id) VALUES (:grade, :title, :c..

[우아한 테크코스 6기 - 프리코스] 4주차 회고

Overview 우아한 테크코스 6기 프리코스 중 4주차 크리스마스 프로모션을 구현하고, 이에 대한 회고이다. Github UML 0. 들어가며 0.1 4주차의 의도? ‘클래스를 분리한다’ 가 객체지향의 특징 그 자체라고 생각한다. 이 목표를 지키려면 수많은 조건을 지켜야 하기 때문이다. 3주차에서 한 번 강조된 이 목표를, 4주차에서 한 번 더 강조하는 이유가 바로 이것 때문이라고 생각한다. 클래스가 정말 예쁘게 분리된 코드를 작성하기에 한 주만으로 당연히 부족했고, 여러 시행착오를 겪으며 4주차에 임하기를 바라는 것이 우테코의 의도였다면 다행히 조금은 이를 만족한 것 같다. 0.2 미션에 임하는 마음 물론 클래스를 분리한다는 것은 4주차에 와서도 어려운 일이었다. 클래스를 분리하고, 메서드를 최소단위..

728x90
반응형