전체 글 23

PlantUML 문법 정리(시퀀스 다이어그램)

프로젝트 설계할 때 그동안은 Draw.io를 이용하여서 시퀀스 다이어그램을 그렸었습니다. 그러던 중, 텍스트로 UML을 만들 수 있는 PlantUML을 알게되었고, 무척 편리했습니다. 시퀀스 다이어그램 그릴 때 필요한 PlantUML 문법을 간단하게 정리해보려고 합니다! PlantUML PlantUML 은 다이어그램을 빠르게 작성하기 위한 오픈 소스 프로젝트입니다. 공식 사이트 : https://plantuml.com/ko/ 다음과 같은 다이어그램을 지원합니다. 시퀀스 다이어그램 유스케이스 다이어그램 클래스 다이어그램 객체 다이어그램 액티비티 다이어그램 (예전 문법은 여기에) 컴포넌트 다이어그램 배치 다이어그램 상태 다이어그램 타이밍 다이어그램 기본 예제 @StartUML ' 작성본문입력 A -> B :..

[ JPA ] 다양한 연관 관계 매핑

객체에서 연관 관계를 설정하고 주인을 정하여 외래키를 다루는 법을 이전 글에서 다루었습니다. 이번에는 연관관계 매핑을 하는 다양한 방법에 대해 알아보겠습니다. 엔티티 연관 관계 매핑 시 고려해야 할 것 다중성 다중성은 다음과 같이 4가지의 종류가 있습니다 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블은 외래키 하나로 조인을 사용하여 양방향으로 쿼리가 가능하므로 방향의 개념이 없습니다. 객체의 경우에는 참조용 필드가 있는 경우에만 연관된 객체를 조회할 수 있습니다. 객체가 한쪽만 참조한다면 단방향, 객체가 양쪽이 서로 참조한다면 양방향이라고 할 수 있습니다. 연관관계의 주인 연관 관계의 주인 : 외래 키를 관..

프로그래밍/JPA 2022.04.14

[ JPA ] 연관관계 매핑 기초

엔티티들은 대부분 다른 엔티티와 연관 관계가 있습니다. 객체와 테이블의 연관 관계에서 가장 큰 두가지의 차이는 객체는 참조(레퍼런스)로 연관관계를 맺습니다. 테이블은 외래 키를 사용해서 조인(join)을 통해 연관관계를 맺습니다. 이러한 차이점 안에서 객체의 참조와 테이블의 외래키를 매핑하는 방법을 정리하겠습니다. 단방향 연관관계 단방향 연관관계는 회원 -> 팀 또는 팀 -> 회원 과 같이 둘 중 한 쪽만 참조하는 것을 단방향 관계라고 말합니다. member와 team이 다음과 같이 연관 관계를 맺고 있습니다. @Entity public class Member { @Id @GeneratedValue @Column(name= "MEMBER_ID") private String id; private Strin..

프로그래밍/JPA 2022.04.13

[ JPA ] 영속성 컨텍스트란?

영속성 컨텍스트란? 영속성 컨텍스트(Persistence Context)는 JPA에서 Server와 데이터 베이스 사이에 엔티티를 영구 저장하는 환경이자 논리적인 영역입니다. 다음은 EntityManager에 관한 자바 공식 문서의 설명입니다. An EntityManager instance is associated with a persistence context. A persistence context is a set of entity instances in which for any persistent entity identity there is a unique entity instance. Within the persistence context, the entity instances and their ..

프로그래밍/JPA 2022.03.28

[ JPA ] JPA란?

JPA Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현합니다 ORM(Object Relational Mapping) 객체와 관계형 데이터베이스를 매핑하는 기술 개발자 대신 SQL문을 작성해주기 때문에 개발자는 단순한 SQL문 작성보다 비즈니스 로직 구성하는데 집중할 수 있어 생산성이 높아집니다. Java의 대표적인 ORM은 JPA가 있으며 다른 언어, 프레임워크에도 ORM이 존재합니다(Python -django) JPA 사용 이유 자바를 통한 데이터 접근 방식에는 JDBC API, MyBa..

프로그래밍/JPA 2022.03.27

[ 자바 / JAVA ] 출력 format(printf)

Java에서 출력할 때 System.out.printf() 메소드를 사용하여 특정 형식의 문자열을 출력할 수 있습니다. C언어에서의 printf() 함수를 사용하는 것과 사용 법은 비슷합니다. [ printf() ] public PrintWriter printf(String format, Object... args) System.out.printf("출력 format", 출력할 내용); format 설명 %s String 형식으로 출력 %d 정수 형식으로 출력 %n 줄바꿈 %f float 형식으로 출력 %t date, time 형식으로 출력 %o 8진수 정수의 형식으로 출력 %x 16진수 정수의 형식으로 출력 %b boolean 형식으로 출력 %e 지수 표현식의 형식으로 출력 [ 문자열 출력 예시 ] %..

[자료구조] 힙(Heap) / 우선순위 큐

[ Heap의 정의 ] 우선순위 큐를 구현한 완전 이진트리로 최댓값 혹은 최솟값을 빠르게 찾아내기 위한 이진트리. 높이가 작은 곳부터, 왼쪽부터 삽입하는 방식으로 작동하며 느슨한 정렬 상태를 유지합니다. 종류로는 최소힙, 최대 힙이 있습니다. 위의 그림은 최소 힙을 나타내었습니다. 최소 힙(Min Heap) : 부모 노드의 값이 자식 노드보다 작다. 최대 힙(Max Heap) : 부모 노드의 값이 자식 노드보다 크다. Heap은 이진 탐색 트리(Binary Search Tree)와 비슷한 트리이지만, 자식과 부모 사이의 대소관계가 다릅니다. Heap은 중복값을 허용, 이진 탐색 트리는 중복값을 허용하지 않습니다. Heap에서 할 수 있는 것은 이진 탐색 트리에서도 가능한데 힙을 쓰는 이유가 무엇일까요? ..

[ 알고리즘 ]최소 비용 신장 트리(MST, Minimum Spanning Tree)

[ 신장트리(Spanning Tree) ] 주어진 방향성이 없는 그래프의 서브 그래프(Subgraph)들 중에서 모든 정점을 포함하는 트리 사이클이 존재하지 않습니다. [ MST ] 그래프의 신장 트리 중에서 간선들의 가중치 합이 최소인 신장트리를 MST(최소 비용 신장 트리,Minimum Spanning Tree)라고 합니다. 간선들의 가중치의 합이 최소 V개의 정점 그래프는 V-1개의 간선 사이클 존재 X 총 3가지의 특징을 가지고 있어야 합니다. 최소 비용 신장트리를 찾는 방법은 크루스칼(Kruskal) 알고리즘과 프림(Prim) 알고리즘이 대표적입니다. 두 가지 모두 그리디 방식으로 구현합니다. 최소 비용 신장 트리는 통신 네트워크 구축, 배관 파이프 건설 등에서 사용될 수 있습니다. [ 크루스칼..

[Web/용어정리] JSP와 Servlet

JSP와 Servlet의 차이에 대해서 알아보겠습니다 Servlet에 대한 설명은 여기 를 참고해 주세요 [ JSP ] 먼저 JSP는 Java Server Page의 약자로 정적인 HTML 파일에 동적인 정보를 넣어서 동적 웹페이지를 생성 가능하게 해주는 Server-side 웹 어플리케이션입니다. JSP는 서블릿의 확장판으로 관리와 배포가 쉬운 특징을 가지고 있습니다. [ JSP vs Servlet ] 두 가지의 대표적인 특징은 Servlet(서블릿) 서블릿은 기본적으로 Java 코드이며 안에 HTML 코드를 넣습니다. 서블릿은 사용자(Client)의 요청(request) 데이터를 처리하는 것(Controller)에 강점이 있습니다. DB와의 통신, Bussiness Logic 호출에 강점을 가지고 있..

프로그래밍/WEB 2021.10.25

[Web/용어정리] 서블릿(Servlet)이란

서블릿(Servlet)의 정의는 다음과 같습니다. "웹 요청(request)의 동적인 처리가 가능한 서버(Server-side)의 자바 프로그램" [서블릿의 특징] 서블릿은 WAS안에 있는 서블릿 컨테이너를 통해 관리가 됩니다. (참고: was설명) 서블릿을 사용하게 되면 동적인 페이지를 생성할 수 있습니다.(참고 : 동적페이지 vs 정적 페이지) 서블릿은 JAVA 코드입니다. 서블릿 안에는 HTML 코드가 들어가 있습니다. (※JSP는 HTML코드 안에 JAVA 코드를 넣습니다.) [서블릿 동작 순서 예시] 다음과 같은 HTML FORM이 있습니다. Username: Password: 1) form 태그에서 action에 어떤 서블릿을 사용할지 정해주고("loginServlet"), method에는 어..

프로그래밍/WEB 2021.10.24