전체 글199 2022년 회고록 - 국비지원 , 포스코 장애인 디지털 아카데미 수료 후기(feat. 1년 반 도전을 마치며) 사실 나는 회고록 이란 것을 별로 좋아하지 않는다. 이는 회고록 이라고 쓰게되면 정말로 그만큼 시간이 지나갔구나...라고 스스로 인식해버리기에 그만큼 아쉽기도하고 이상하기도 하고 기분이 미묘하기 때문이다. 그럼에도 올해는 적어도 2022년에 대해서 만큼은 회고록을 작성해야겠다는 생각을 하였다. 지난 회사로부터 약 1년 반의 시간 동안 '개발자'라는 직업에 도달하기 위해서 도전해왔다. 나름 열심히는 해왔다고 생각한다. 조금의 자랑을 덪붙이자면 지난 시간동안 3일 이상 코딩을 쉬어본적이 없었다. println 이라도 쳐야한다는 마음으로 주중에도 주말에도 카페에 나가서최소 한번은 코드를치고 결과를 보곤 했다. 물론 그만큼 부족한 것도 많았다. 기본기의 부족, 자료구조에 대한 이해부족, 알고리즘 지식 부족..... 그냥 사는 이야기 2022. 12. 23. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (7) WebRTC 를 이용한 실시간 화면 공유 이전 글에 이어서 WebRTC 를 사용해서 실시간 화면 공유를 구현해보았습니다. 저번 글에 '화면 공유 기능 목표!!' 라고 이야기했던게 사실 오래 걸릴 줄 알았는데 의외로 금방? 끝났습니다ㅋㅋ 라고 이전에 글을 썼었는데...생각해보니 공유 되는 나의 화면을 나만 볼 수 있었고, 내 화면을 다른 사람이 보는 내가 생각했던 진짜 '화면 공유' 기능이 아니었다는 걸 깨달았습니다. 결국 빠르게 글을 잠금표시로 전환해두고 코드를 뜯어고치기 시작했습니다. 솔직히 금방 끝나서 다행이다! 했는데 결국 이렇게 또 한주가 가버렸네요ㅠ.ㅠ JS 부분만 고치면 되는거여서 Java 부분의 코드 수정은 전혀 없었습니다 코드는 언제나 처럼 git 참고!! https://github.com/SeJonJ/Spring-WebSocke.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 10. 31. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (6) WebRTC 를 이용한 실시간 화상 채팅 구현하기(feat. https 인증서 적용) 1. 실시간 화상 채팅 구현하기! 사실 실시간 화상 채팅이고 뭐고 순서상 JPA 를 사용한 회원가입을 구현하는게 먼저였지만...갑자기 화상 채팅에 꽂혀버려서 구현해봤습니다ㅋㅋㅋㅋ 솔직히 이번에는 다른 것보다 어렵겠구나 라는 생각을 했었습니다. 왜냐하면 아주 단순하게 생각해도 화상 채팅을 구현하기 위해서는 클라이언트끼리의 화면 연결, 음성 연결 등등등 정말 생각하고 고려할게 많았기 때문입니다. 그래도 만들려보고 키보드를 두들겼던 가장 큰 이유는 이전 채팅처럼 쉬운 예제가 많이 있다고 생각했었기 때문입니다. 그러나 의외로 참고할 자료가 많이 없었고, 이 부분이 굉장히 큰 에러였던 것 같습니다ㅠㅠ 처음에 예제를 찾아봤을 때 대부분이 스프링 대신 node.js 로 구현한 경우가 많았습니다. 솔직히 중간부터는 나.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 10. 29. 쿠버네티스 kubernetes 정복기(1) 설치하기, 각종 오류 트러블슈팅, 초기화(feat.성공적) 1. 시작하면서 최근에 도커를 공부하다가 갑자기...쿠버네티스에 관심이 생겨서 설치해서 이곳에 제가 지금까지 만들었던 프로젝트들을 올려보기로 했습니다. 사실 쿠버네티스가 정확히 뭔지 도커와 뭔 차이가 있는지, 쿠버네티스에서 사용하는 용어들 파드, 서비스, 데몬셋, 레플리케이션 api-server, proxy 등등 알아야할 것도 정말 많고, 공부해야할게 정말 많았습니다. 때문에 이것들을 공부하고 설치하고 알아가야하지만, 제게는 시간도 부족했고 무엇보다 제 프로젝트들을 올리는 용도로 쓰기위해 만드는 것이기 때문에 일단 머리부터 들이밀어 봤습니다. 설치하는건 돈이 안들잖아요...?ㅋㅋㅋ 다만 저 때까지는 설치하면서 얼마나 오류가 날지 그리고 설치 후에도 얼마나 오류가 날지 몰랐습니다ㅠㅠㅠ 마치 메일 서버 구축.. Server/Docker & Kubernetes 2022. 10. 22. Spring JPA (9) - JPA 값 타입 : 기본값, 임베디드, 값 타입 컬렉션 1. JPA 데이터 타입 분류 기본값 타입 설명 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원 엔티티의 키나 나이를 변경해도 식별자로 인식 가능 기본값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고, 값만 있으므로 변경시 추적 불가 --------- 1. 기본값 타입 - int , double - 래퍼 클래스 Integer, Long - String 2. 임베디드 타입 - embedded type, 복합 값 타입 3. 컬렉션 값 타입 - Collection value type 2. 기본값 타입 - 생명 주기를 엔티티에 의존 - 값 타입은 공유하면 XXXXXX => A 라는 회원 이름 변.. Java - SpringJPA 2022. 10. 11. Spring JPA (8) - JPA 프록시와 연관관계 관리, 즉시로딩, 지연로딩, Cascade, 고아 객체 이번 포스팅의 핵심은 지연 로딩!!! 꼭 기억하고 넘어가자 1. Member 를 조회할때 Team 을 함께 조회해야 할까? 아래의 Member 엔티티는 DB 에서 조회 시, team 을 함께 가져오게 된다. 만약 비즈니스상 member 와 team 을 함께 조회해야하는 경우에는 이렇게 함께 가져오는게 잘못된 것이 아니다. 그러나 member 만 조회해와도 충분한 경우, 즉 굳이 team 을 함께 조회하지 않아도 되는 경우에도 team 을 함께 조인해서 가져오는 것은 굉장한 자원 낭비 그 자체! => 이런 문제를 해결하기 위해 사용되는 방식이 JPA 프록시와 지연로딩 기술이다 Member @Entity(name = "teamMember") @Table @Getter @Setter public class M.. Java - SpringJPA 2022. 10. 11. Thymeleaf 공부하기 (2) : 속성 값 설정, 반복, 조건, 주석, 블록, 자바스크립트 인라인, 템플릿 조각, 템플릿 레이아웃 1. 속성 값 설정 타임리프는 주로 HTML 태그에 th:'속성명' 을 지정하는 방식으로 동작한다. th:'속성명' 로 속성을 적용하면 기존 속성을 대체한다. 만약 기존 속성이 없으면 새로 만든다. checkbox 같은 경우 th:checked="true, false" 로 사용한다 속성 설정 속성 추가 - th:attrappend class 속성 뒤에 붙는다 = - th:attrprepend class 속성 앞에 붙는다 = - th:classappend class 속성에 자연스럽게 추가 = checked 처리 - checked o - checked x - checked=false 2. 반복문 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다. ind.. Front-End/thymeleaf 2022. 10. 11. Thymeleaf 공부하기 (1) : 텍스트, 변수, 기본 객체, 유틸리티 객체와 날짜, url 링크, 리터럴, 연산 본 Thymeleaf 공부하기 시리즈는 김영한 님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의를 듣고 작성한 내용입니다. 들어가면서 몇몇 포스팅에서 계속 이야기해왔지만 나는 정말정말 HTML 에 서툴다. CSS 는 말 할 것도 없고. 다만 어쨌든 내가 만든 프로젝트의 결과물들을 단순한 자바 코드로 보여 줄 수는 없었기에 HTML 을 공부...가 아니라 검색해서 사용해왔다. 다행히도 JSP 와 JSTL 을 배운 경험이 있어서 JSP 로 프론트 페이지를 겨우 구현할 수는 있었다. 사실 jsp 를 쓰면서 굉장히 불편했던 점이 많았다. JSP의 특성상 HTML 파일에 JAVA 코드가 들어갈 때가 많았고, JAVA 코드가 아닌 JSTL 을 사용해서 구현한다고 하더라도 JSTL 과 HTML, CSS 까.. Front-End/thymeleaf 2022. 10. 11. Spring JPA (7) - JPA 고급 매핑 : 상속관계 매핑, @mappedsuperclass 1. 상속 관계 매핑 - 관계형 DB 는 상속 관계 X - 슈퍼 타입, 서브 타입 관계라는 모델링 기법이 객체 상속과 유사 1) 슈퍼 타입, 서브타입의 논리 모델을 실제 물리 모델로 구현하는 방법 : 총 3가지 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 생성 상속 관계 매핑 : 객체의 상속 구조와 DB 의 슈퍼 타입, 서브 타입 관계를 매핑하는 것 2) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 => JPA 기본값 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @Discri.. Java - SpringJPA 2022. 10. 4. Spring JPA (6) - JPA 개념 잡기 : 엔티티 연관관계 매핑 1:N, N:1, N:M, 1:1 1. 연관관계 매핑 시 고려사항 3가지 1) 다중성 - 관련 어노테이션 기억!! 다중성 어노테이션 주의사항 N:1 @ManyToOne 1:N @OneToMany 1:1 @OneToOne N:M @ManyToMany 실무에서 거의 사용 X 2) 단방향, 양방향 테이블 - 외래키 하나로 양쪽 조인 가능 => 사실 방향이라는 개념이 없음 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 => 얘도 사실 단방향 + 단방향 : 객체 서로서로에 대한 단방향 3) 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 -> 객체 양방향 관계는 A->B , B->A 처럼 참조가 2군데 - 객체 양방향 관계는 참조가 2군데 있음!! 따라서 둘중 .. Java - SpringJPA 2022. 10. 3. Spring JPA (5) - JPA 개념 잡기 : 단방향 연관관계, 양방향 연관관계, 연관관계의 주인 1. 연관관계 매핑의 기초 - 객체와 테이블 연관관계 차이를 이해 - 객체의 참조와 테이블 외래키를 매핑 => 객체 지향적 모델링은 단순히 FK 에 해당하는 변수를 사용하는 것이 아닌 객체의 참조를 FK 로 사용하는것!! - 간단 용어 정리!! 용어 설명 방향 Direction 단방향, 양방향 다중성 Multiplicity 다대일 N:1, 일대다 1:N, 일대일 1:1, 다대다 N:M 연관관계의 주인 Owner 객체 양방향 연관관계 관리 테이블과 객체 사이의 간격!! - 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다 - 객체는 참조를 사용해서 연관된 객체를 찾는다. 예제 시나리오 - 회원과 팀이 존재하며, 회.. Java - SpringJPA 2022. 10. 3. Spring JPA (4) - JPA 개념 잡기 : 객체-테이블 매핑, 필드와 칼럼, 기본키 매핑 1. 객체와 테이블 매핑 1) @Entity - @Entity 가 붙은 클래스는 JPA 가 관리하며 엔티티, 엔티티 클래스 라고 한다. - JPA 를 사용해서 테이블과 매핑 할 클래스는 @Entity 가 필수이다 - 이때 기본 생성자는 필수!!! : 파라미터가 없는 pulbic 또는 protected 생성자가 필요하다 => JPA 에서 사용하는 객체를 프로싱하거나 하는 등등의 기술들이 있는데 이때문에 기본 생성자가 필수라고한다 - final 클래스, enum, interface, inner 클래스 사용X - 저장할 필드에 final 사용 X 핵심 Point!! DB 테이블과 매핑하기 위한 클래스 ( 보통 DTO ) 에 @Entity 어노테이션을 붙인다. 이때 PK 에 해당하는 변수에는 @Id 어노테이션을.. Java - SpringJPA 2022. 10. 2. 이전 1 2 3 4 5 6 ··· 17 다음