Programming/JAVA 16

JPA - 영속성 컨텍스트(persistence context) 파헤쳐보기

목차 개요 지난 포스팅에선 JPA의 큰 개념과 이론에 대해 알아보았습니다. 이번엔 JPA에서 가장 중요한 패러다임인 영속성 컨텍스트 (Persistence Context) 에 대해 알아보겠습니다. JPA를 공부하다 보면 자주 마주하는 단어가 영속성 컨텍스트인데, 저는 아무리 봐도 잘 머리에 남지가 않았습니다. 애매모호하게 알고만 있던 개념이다 보니 그런거 같아서 한번 정리하고 가면 좋을거 같습니다. Persistence Context JPA가 데이터를 관리하기 위해 엔티티를 사용해서 데이터베이스에서 데이터를 매핑하고 이를 저장해야하며, 이때 필요한 환경을 영속성 컨텍스트라고 합니다. 좀 더 간단하게 말하자면 "엔티티를 영구히 저장하기 위한 환경" 이라 하며 엔티티를 조작하기 위해 EntityManager..

Programming/JAVA 2022.12.28

JAVA - Lambda Capturing

목차 Lambda Capturing 먼저 람다식(Lambda Expressions)은 JDK 8 버전에서 추가된 기능으로 함수형 프로그래밍에서 보이는 arrow(화살표) 식으로 표현되는 문법으로 함수의 흐름을 명확하고 간결하게 표현하는 특징이 있습니다. 보통 데이터를 추출할 때 반복되거나 필터링이 필요할 경우 자주 사용됩니다. Java 에서 람다식은 함수로 취급되기 때문에 컴파일러가 .class 파일을 생성하지 않는다는 특징이 있습니다. 기본적으로 자바에서 람다식을 표현할 땐 (Parameter) -> function 의 구조로 이루어져 있으며, 파라미터로 넘긴 변수를 활용하여 작업을 수행합니다. 이때 람다 캡처링(lambda capturing) 은 파라미터로 넘겨받은 데이터가 람다식 내부에서 받은 변수..

Programming/JAVA 2022.12.06

JPA - JPA의 정의, 개요

목차 개요 요새 자바언어를 공부하시거나 사용하고 계시는 많은 개발자분들은 모를 수 없는 게 있습니다. 바로 JPA 저도 자바 개발자로서 JPA를 사용해보았고 대략 어떤개념인지는 알고 있었으나, 제대로 공부했다는 아니었어서 이번에 JPA관련 강의를 들으며 배운점과 추가적으로 공부한점을 모아 포스팅을 해보겠습니다. JPA와 ORM JPA란 Java Persistence API 의 약자로 자바 진영의 ORM(Object Relational Mapping) 기술의 표준입니다. 이렇게 이름만 들어서는 정확히 어떤기능을 하는건지 잘 모르겠습니다. 먼저 ORM에 대해 알아보자면 객체와 관계형 데이터베이스사이에서 매핑해주는 기술이며, 이를 통해 객체는 객체답게 설계하고 관계형 데이터베이스는 데이터베이스대로 설계할 수 ..

Programming/JAVA 2022.12.04

JAVA - Priority Queue(우선순위 큐) 알아보기

개요 오늘은 코딩테스트 문제를 풀이하다가 알게된, Queue 종류중 하나인 Priority Queue 에 대해 알아보겠습니다. 먼저 Queue 는 데이터를 일시적으로 쌓아두기 위한 자료구조 중 하나로 First In First Out (FIFO)의 구조로 이루어져 있고 이는 말 그대로 먼저 적재된 데이터가 먼저 나가게 됩니다. 그 예로 가장 적절한 건 아마 대기표일겁니다. 은행이나 식당에서 먼저 대기표를 뽑은 사람이 먼저 들어가는 방식과 동일합니다. 하지만 오늘 알아볼 우선순위 큐 는 순서대로 데이터를 적재하고 관리하는게 아닌 선언할때 우선순위를 먼저 정한 후 그 우선순위에 따라 자동 정렬되어 데이터가 나갈 때 우선순위가 높은 순서대로 추출되게 됩니다. 특징 높은 우선순위의 요소를 먼저 꺼내서 처리하는 ..

Programming/JAVA 2022.11.30

디자인 패턴 - SOLID

SOLID 원칙이란? SRP (Single responsibility principle) : 단일 책임 원칙이라 하며, 클래스는 단 한개의 책임만을 가져야 한다 는 뜻입니다 예를 들어 Add Class 가 있고 이 클래스는 사칙연산 중 더하기에 해당하는 책임만을 져야합니다. 빼기, 나누기, 곱하기 등 다른 연산의 책임을 가지지 않아야 하는 원칙인데, 복잡한 요구사항을 필요로 하는 프로그램에서 단 한가지의 책임만을 지키기는 어렵습니다. 이 원칙을 무조건 지켜야하는 강제적인 룰이 아닌, 되도록이면 최대한 지키면서 설계를 해야하는 것이 올바른 접근방식이라고 생각합니다. OCP (Open closed priciple) : 개방 폐쇄 원칙이라 하며, '개방' 이란 확장성과 관련된 엔티티, 모듈, 함수등에는 열려 ..

Programming/JAVA 2022.10.22

이펙티브 자바 - 2장 객체 주입 , 관리 , 참조

아이템5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 여러 클래스가 하나 이상의 자원에 의존합니다. 예를 들면 맞춤법 검사기는 사전에 의존하는데, 이런 클래스를 정적 유틸리티 클래스로 구현한 모습을 드물지 않게 볼 수 있습니다. 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않습니다. // 정적 유틸리티를 잘못 사용 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker(){} public static boolean isValid(String word) {} public static List suggestions(String typ..

Programming/JAVA 2022.03.15

이펙티브 자바 - 2장 빌더, 싱글톤, private 생성자

아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 경우 적절한 대응을 하기가 어렵다는 점이다. 처음 자바를 공부할 때, 사용자가 필요로하는 경우의 수가 많을수록 생성자의 가짓수도 많아지는 경우를 경험해보았을 것이다. 1. 점충적 생성자 패턴 public class Camping { private final int tent; private final int clothes; private final int backpack; private final int food; private final int camper; public Camping(int tent, int food) { this(tent, food); } public C..

Programming/JAVA 2022.03.13

이펙티브 자바 - 1, 2장 개요, 객체 생성과 파괴

개요 매주 이펙티브 자바를 한 단원씩 공부하기로 했다. 자바 개발자로 일하면서 애매하게 알고넘어갔던 부분과 심화적으로 알고있어야 할 내용을 배우기위해서 이펙티브 자바를 선택했다. 어려운 책이라고 후기들을 봤고, 선배 개발자와 얘기해도 어려운 책이니 잘 안읽힌다고 들었지만, 어렵다고 미루기보단 지금부터 봐 둬야 나중에 다시보는 일이 있어도 보기 수월할 것 같았다. 그러므로 시작해보겠다. 1장 : 들어가기 자바 입문자가 아닌 자바에 익숙한사람을 위한 책이라고 설명하며 시작한다. 나 역시 자바 개발자라고 하지만 입문자나 마찬가지라고 생각한다. 문법만 안다고 전부를 아는건 아니며, 알고 쓰는것과 모르고 쓰는것은 다르다는 것을 알고 있기 때문이다. 이 책에선 성능적인 부분도 있지만 그보다 명확하고 정확하고 유용하..

Programming/JAVA 2022.02.20

자바 개념정리하기 - JVM, Memory, OOP

시작하며 뜬금없지만. 혼자 블로그에 글로 쓰면서 자바, 스프링의 이론이나 개념 혹은 단어의 뜻을 한번 적으면서 정리하고자 합니다.. 워낙 프로그래밍에서 쓰이는 단어들이 낯설고 익숙하지 않거나, 자주쓰이지 않지만 알고있어야하는 단어와 뜻들이 있는거같습니다. 애매하게 알고있거나, 대략 이런뜻이겠거니, 혹은 공부했지만 까먹었던걸 한번 복기하자는 의미에서 포스팅을 하게 되었습니다. JVM - Java Virtual Machine 자바 가상머신, 말 그대로 가상으로 존재하는 소프트웨어이다. 자바언어는 os에 독립적이고자 JVM을 활용해, 자바코드를 바이트 코드로 변환하고 각 os에 맞게 전달한다. 이처럼 JVM이 동작하는 몇가지 특징이나 기능들을 살펴보자면, 자바 인터프리터 (interpreter) : 자바 컴파..

Programming/JAVA 2021.12.14

JAVA - 제어문 (Controll statment)

제어문이란 ? 자바 인터프리터는 프로그램을 위에서 아래로, 오른쪽에서 왼쪽으로 읽어갑니다. 이 프로그램의 흐름을 변경하는 것을 제어문이라고 합니다. 제어문의 종류 조건문 : 조건에 따라 다른 문장이 수행되도록 제어함 반복문 : 특정 문장들을 반복해서 수행하도록 제어함 분기문 : 반복문을 종료시키거나 재실행 시키는등의 제어기능 1. 조건문 조건문의 종류는 if문 , switch문 이 있습니다. 먼저 if 문은 조건식의 결과 값이 true 면 문장1이 수행되지만, false면 실행되지 않고 else if문의 다음 조건식2로 넘어갑니다. 그렇게 계속해서 해당 조건식의 결과 값이 true가 될때까지 수행하며, 결국 일치하는 값이 없다면 마지막에 else 문을 통해 문장4를 수행하고 종료됩니다. if 문 if(조..

Programming/JAVA 2021.07.30