전체 글 40

[JAVA] 스트림(Stream) 개념

스트림이란?자바 8 API에 새로 추가된 기능으로, 스트림을 사용하면 선언형(데이터를 처리하는 임시 구현 코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있다. 또한, 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 스트림이 어떤 유용한 기능을 제공하는지 확인하기 위해 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 자바 7 코드를 자바 8의 스트림을 이용해 다시 구현해본다. 자바 7 코드List lowCaloricDishes = new ArrayList(); for (Dish d : dishes) { if (d.getCalories() lowCaloricDishesNames = new ArrayList(); Co..

Programming/Java 2024.06.27

[JAVA] 람다식(Lambda)에 대해 알아보자

개인적으로 람다 표현식에 대한 지식이 부족하다 생각했는데, 이번 기회를 통해 제대로 개념을 잡고 넘어가는 게 좋겠다는 생각이 들었다. 따라서, 이번 글에서는 자바 8부터 등장한 람다 표현식이 무엇인지, 람다 표현식을 어떻게 만들고 사용하는지 등에 대해 알아보도록 한다. 람다란 무엇인가람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트를 가질 수 있다. 람다의 특징익명보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다.함수람다는 다른 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만, 메서드처럼 파라미터 리스트..

Programming/Java 2024.06.27

[Spring JPA] 연관관계 매핑 (4)

연관관계가 필요한 이유 예제 시나리오를 보며 설명을 진행한다. 예제 시나리오회원과 팀이 있다.회원은 하나의 팀에만 소속될 수 있다.회원과 팀은 다대일 관계다. 객체를 테이블에 맞추어 모델링 예제 시나리오에 따라 객체를 테이블에 맞추어 모델링해보면 다음과 같이 나타낼 수 있다.  다음과 같은 모델링 결과를 통해 알 수 있는 점은 객체 간에는 연관관계가 없지만, 테이블 간에는 연관관계가 존재한다는 점이다. 테이블을 자세히 살펴보면, 멤버와 팀이 다대일 관계를 가지고 있고, 이 중, '다'의 관계인 Member가 Foreign Key를 가지고 있는 것을 알 수 있다.   참조 대신에 외래키를 그대로 사용 현재 객체를 테이블에 맞추어 모델링을 진행했으므로 참조 대신에 외래키를 그대로 사용하여 연관관계 매핑을 진..

Spring 2024.05.16

[Spring JPA] 객체와 테이블 매핑 (3)

JPA에서 가장 중요하게 봐야 되는 두 가지는 영속성 컨텍스트와 같이 JPA가 내부적으로 어떤 메커니즘으로 동작하는지에 대한 측면과 객체와 관계형 데이터베이스를 어떻게 매핑하여 쓰는지에 대한 설계적인 측면이 있다. 이번에는 엔티티 매핑에 대해 알아보자.   객체와 테이블 매핑 @Entity@Entity가 붙은 클래스는 JPA가 관리하며, 이를 엔티티라 한다.JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 반드시 붙여야 한다.주의할 점기본 생성자 필수final 클래스, enum, interface, inner 클래스 사용 불가저장할 필드에 final 사용 불가 @Entity 속성속성: nameJPA에서 사용할 이름을 지정한다기본값: 클래스 이름을 그대로 사용같은 클래스 이름이 없으면 가급적 기본..

Spring 2024.05.13

[Spring JPA] 영속성 컨텍스트 (2)

JPA에서 가장 중요한 두 가지 사항이 있는데, 바로 객체와 관계형 데이터베이스를 매핑하는 것과 영속성 컨텍스트를 이해하는 것이다. 이번에는 영속성 컨텍스트에 대해 알아볼 것인데, 영속성 컨텍스트에 대해 명확히 이해한다면 JPA가 어떻게 동작하는지 정확히 이해할 수 있다.  엔티티 매니저 팩토리와 엔티티 매니저 그 전에 JPA를 사용하기 위해서는 먼저 엔티티 매니저 팩토리와 엔티티 매니저에 대해 이해해야 한다.  다음과 같은 웹 어플리케이션을 개발할 때, 엔티티 매니저 팩토리는 고객의 요청이 올 때마다 엔티티 매니저를 생성하게 된다. 엔티티 매니저는 내부적으로 데이터베이스 커넥션을 사용해서 DB를 사용하게 된다.  영속성 컨텍스트 영속성 컨텍스트란, JPA를 이해하는데 가장 중요한 용어로 "엔티티를 영구..

Spring 2024.05.12

[Spring JPA] JPA 소개 (1)

JPA 우리는 애플리케이션 개발 시 주로 객체 지향 언어와 관계형 데이터베이스를 사용하여 개발한다. 과거에 JPA가 등장하기 전에는 개발자들은 SQL에 의존적인 개발을 피할 수 없었다. 하지만 SQL 중심적인 개발을 하게 되면 다음과 같은 문제가 발생한다.무한 반복, 지루한 코드객체 하나를 보관하고 꺼내고 삭제하려면 계속해서 쿼리를 작성해야 한다. 이러한 문제를 해결하기 위해 JPA가 등장하게 되었다. JPA란 Java Persistence API의 약자로, 자바 진영의 ORM 기술 표준을 말한다. ORM (Object Relational Mapping) ORM은 Object Relational Mapping의 약자로 말 그대로 객체와 관계를 매핑하는 것을 말한다. 즉, Relational은 관계형 DB..

Spring 2024.05.12

[백준] 15650 N과 M(2) - Python

백트래킹이란? 문제 설명에 들어가기 전, 해당 문제는 백트래킹을 사용하는 문제이다. 따라서 백트래킹의 개념에 대해 간단히 짚고 넘어가도록 하자. 백트래킹을 간단하게 요약하면, 모든 경우의 수를 살펴가며 Decision Space를 만들고, 가능성이 없는 것들은 탐색을 중지하고 뒤로 돌아가는 방법이다. 간단하게 예시를 통해 백트래킹에 대해 알아보자. 우리는 일상생활에서 휴대폰을 이용해 전화를 걸 때, 전화기 다이얼을 사용한다. 아래의 다이얼을 살펴보면, 숫자 위에 알파벳들이 나열되어 있는 것을 확인할 수 있다. 여기서 알파벳을 이용해 숫자 '25'를 나타내고 싶다고 가정해 보자. '25'를 나타낼 수 있는 모든 알파벳 조합을 나열하면 다음과 같다. [[AJ, AK, AL], [BJ, BK, BL], [CJ..

Algorithm/Baekjoon 2024.03.31

[백준] 2217 로프 - Python

작년 11월 초부터 코테 스터디를 들어가게 되면서 파이썬으로 코테 문제를 꾸준히 문제를 풀기 시작했다. 실력이 이전보다 늘긴 했지만, 여태까지는 문제를 풀면서 내가 생각했던 내용들을 정리하지 않고 단순히 문제만 푸는 것에 급급했다. 어느 순간부터 더 이상 발전이 없는 느낌을 받았고, 공부 방식을 바꿔야겠다는 생각이 들었다. 따라서 내가 이 문제를 어떠한 방식으로, 어떻게 접근했는지 등의 과정을 글로 정리하면 나중에 비슷한 문제를 풀게 됐을 때 내가 어떠한 부분이 부족했는지 좀 더 쉽게 파악할 수 있고, 스스로 해결 과정을 정리해 나감으로써 한 번 더 내용을 상기시킬 수 있을 것이라는 생각이 들어 이 글을 기점으로 알고리즘 문제 풀이 블로그 작성을 시작하겠다. 문제 설명 & 풀이 https://www.ac..

Algorithm/Baekjoon 2024.03.10

[데이터베이스] SQL로 DB에 데이터를 추가, 수정, 삭제하기

데이터 추가하기 데이터를 추가하기에 앞서, 우리가 데이터를 추가하기 위한 테이블은 employee이다. employee 테이블은 다음과 같이 구성되어 있다. 이제 이 employee 테이블에 데이터를 추가해 보자. employee 테이블에 데이터를 추가하는 방법은 다음과 같다. INSERT INTO employee VALUES(1, 'MESSI', '1987-02-01', 'M', 'DEV_BACK', 100000000, null) INSERT INTO 뒤에 데이터를 추가하고자 하는 테이블을 추가하고, VALUES 키워드 뒤에는 추가하려 하는 값을 입력하면 된다. VALUES에 해당하는 값들을 입력할 때 중요한 점은 값들의 순서이다. 즉, create table을 통해 employee 테이블을 정의할 때..

Database 2024.02.29

[데이터베이스] SQL 개념, 데이터베이스 정의 방법

SQL 기본 개념 SQL 뜻 SQL이란, Structured Query Language의 약자로, 현업에서 쓰이는 relational DBMS의 표준 언어이다. SQL은 종합적인 database 언어이며 DDL, DML, VML의 모든 기능을 종합적으로 제공한다. SQL의 주요 언어 relational data model에서 표현하던 용어를 SQL 용어로 표현하면 다음과 같다. relational data model SQL relation table attribute column tuple row domain domain SQL에서 relation의 의미 SQL에서 relation은 relational data model에서의 relation과 차이가 있다. SQL에서 relation은 multiset(..

Database 2024.02.23