일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 애자일기법
- 그리디
- 프레임워크
- JPA
- 코딩
- 코딩테스트
- 데이터베이스
- mongoDB
- 클린코드
- 개발
- Spring
- 그리디알고리즘
- ES
- framework
- 알고리즘
- cleancode
- Baekjoon
- API
- 읽기쉬운코드
- 자바
- 개발자
- 스프링
- 애자일프로그래밍
- 코드
- 엘라스틱서치
- Elasticsearch
- 백준
- Java
- spring boot
- database
- Today
- Total
목록전체 글 (182)
튼튼발자 개발 성장기🏋️
1. 벌크 연산엔티티를 수정하려면 영속성 컨텍스트의 변경 감지 기능이나 병합을 사용하고, 삭제하려면 remove() 메소드를 사용한다. 만약 수백개 혹은 수천개의 데이터를 처리해야한다면 성능이 매우 떨어질 것이다. 이럴 때 벌크 연산을 사용하여 한 번에 처리가 가능하다.1.1 벌크 연산의 주의점벌크 연산은 데이터베이스에서 대량의 데이터를 한 번에 업데이트하거나 삭제하는 작업을 의미한다. JPA에서는 JPQL을 사용하여 벌크 연산을 수행할 수 있다. 벌크 연산은 다음과 같은 주의점을 가지고 있다.영속성 컨텍스트의 비동기성: 벌크 연산은 데이터베이스에 직접 쿼리를 실행하기 때문에, JPA의 영속성 컨텍스트에 있는 엔티티들과 동기화되지 않는다. 즉, 영속성 컨텍스트는 벌크 연산 결과를 알지 못하므로, 벌크 연..
객체지향 쿼리 언어는 데이터베이스의 테이블이 아닌 객체를 대상으로 데이터를 조회하는 쿼리 방법이다. 그러므로 데이터베이스에 의존하지 않고 개발할 수 있다는 장점이 생긴다.JPQLJPQL(Java Persistence Query Language)은 객체 지향적으로 데이터를 조회하는 쿼리 언어로, SQL과 유사하지만 엔티티를 대상으로 쿼리를 작성한다. 가장 많이 사용되는 쿼리 방식다.JPQL은 데이터베이스 테이블이 아닌 엔티티와 속성을 대상으로 쿼리한다.String jpql = "SELECT e FROM Employee e WHERE e.name = :name";TypedQuery query = em.createQuery(jpql, Employee.class);query.setParameter("name",..
1. 기본값 타입기본값 타입은 자바의 원시 타입과 그에 대응되는 래퍼 클래스, 그리고 String 같은 값 클래스들로, JPA에서는 이러한 타입을 값 타입이라고 부른다. 예를 들어, int, Integer, String, boolean 등이 기본값 타입에 속합니다. 이러한 타입들은 데이터베이스의 컬럼에 매핑되어 저장되며, JPA가 제공하는 생명주기를 따르지 않고, 불변 객체로 다루는 것이 일반적이다.2. 임베디드 타입임베디드 타입(Embeddable Type)은 여러 개의 기본값 타입을 모아서 하나의 복합적인 값 타입을 만드는 것이다. 이 임베디드 타입은 엔티티의 일부로 사용되며, 엔티티의 속성으로 포함되어 데이터베이스 테이블의 컬럼에 매핑된다. 예를 들어, 주소(Address)와 같은 객체는 도시, 거..
1. 대칭키 암호화대칭키 암호화는 같은 키로 암호화와 복호화를 수행하며, 빠르고 효율적이지만 키 관리가 어렵다.키 구조: 암호화와 복호화에 동일한 키를 사용한다.작동 원리: 데이터를 암호화할 때 사용한 키와 동일한 키로 데이터를 복호화한다. 즉, 데이터 송신자와 수신자가 동일한 키를 공유해야 한다.장점: 비교적 빠르고 효율적이다. 대용량 데이터를 암호화할 때 성능이 뛰어나므로 실시간 통신이나 대규모 데이터 전송에 자주 사용된다.단점: 키가 노출되면 제3자가 데이터를 쉽게 복호화할 수 있기 때문에 키를 안전하게 전달하고 관리하는 것이 어려울 수 있다.종류: AES, DES 등2. 공개키 암호화공개키 암호화는 서로 다른 키로 암호화와 복호화를 수행하며, 보안성이 높지만 처리 속도가 느리다. 주로 키 교환이나..
로드 밸런서는 네트워크 트래픽을 여러 서버에 효율적으로 분산하여 시스템의 성능과 가용성을 향상시킬 수 있다. 구체적으로, 로드 밸런서는 다음과 같은 주요 기능을 수행한다.트래픽 분산: 클라이언트로부터 들어오는 요청을 여러 서버에 고르게 분배하여 각 서버에 과부하가 걸리지 않도록 한다. 이를 통해 시스템 전체의 처리 능력을 향상시키고, 트래픽이 급증해도 안정적인 서비스를 제공할 수 있다.장애 조치: 서버 중 하나가 장애를 일으키면, 로드 밸런서는 자동으로 해당 서버로의 트래픽을 차단하고 다른 정상적인 서버로 트래픽을 전환하여 서비스가 지속적으로 운영되도록 할 수 있다.세션 유지: 일부 로드 밸런서는 특정 클라이언트의 요청을 동일한 서버로 보내도록 세션을 유지하는 기능을 제공한다. 클라이언트로부터 들어오는 ..
java에서 비교하는 방법은 참조 비교(==)와 값 비교(equals()) 두 가지가 있다.String str1 = "str";String str2 = "str";String str3 = new String("str");/* * 리터럴이 이전에 상수 풀에 저장된 적이 있다면, 새로운 객체를 생성하지 않고 이미 존재하는 객체의 참조를 할당한다. * 따라서 같은 메모리의 주소를 바라보고 있기 때문에 첫 번째 비교문은 참이다. */System.out.println(str1 == str2); // true// str1과 str2는 같은 값인 "str"이 할당되어 있기 때문에 참이다.System.out.println(str1.equals(str2)); // true/* * 리터럴이 상수 풀에 존재하더라도, 힙 메..

java에서 문자열을 생성할 때 보편 적으로 두 가지 방법이 있다. (StringBuilder, StringBuffer 제외)String str1 = "str1";String str2 = new String("str1"); 이 두 방법에는 어떤 차이가 있을까?일단 이를 이해하려면 jvm의 메모리 구조를 알아야 한다.더보기 [그림 1]과 같이 jvm은 크게 다섯 가지의 메모리 구조를 갖는다. 컴파일이 된 class 파일은 Class Loader로부터 method 영역에 로드된다. method 영역: 클래스에 대한 정보가 저장된다. (클래스 이름, 접근 제어자, 필드, 메서드) 또한 static 변수가 저장되는데 힙 영역에 생성된 객체를 참조할 수 있다.Heap 영역: 런타임에 생성되는 모든 객체가 저장된다..

java에서는 "에러"라는 워딩보다 "예외" 혹은 "Exception"이라는 워딩을 사용하고 python에서 "Error" 워딩을 사용했었다. 그런데 java에서도 Error라는 워딩을 사용한다. 에러(Error)와 예외(Exception)는 모두 런타임에 발생할 수 있는 문제를 나타낸다는 공통점이 있다. 하지만 차이점은 분명히 있다. Error에러는 주로 jvm에서 발생하는 심각한 문제로, 프로그램이 정상적으로 실행될 수 없을 때 발생된다. 보통 개발자가 직접 처리하기 어렵거나, 처리하지 않아야하는 경우가 많다고한다. 우리가 흔히 알고있는 Throwable 클래스를 상속받은 Error 클래스는 java.lang 패키지에 있다. 이 Error 클래스를 상속받은 ThreadDeath 클래스라던지, Virt..