일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 영속성 컨텍스트
- 완전탐색
- 백준
- CS
- 알고리즘
- java
- jpa
- BFS
- Docker
- DFS
- Data structure
- 트랜잭션
- mysql
- 자료구조
- 운영체제
- 프로그래머스
- nosql
- redis
- db
- 트러블슈팅
- OS
- 데이터베이스
- spring
- PYTHON
- CSS
- HTML
- websocket
- It
- Algorithm
- javascript
- Today
- Total
목록분류 전체보기 (104)
If at first you don't succeed, try again
* 영속성 컨텍스트란?엔티티를 영구 저장하는 환경이라는 뜻이다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.em.persist(member);persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. * 엔티티의 생명주기- 비영속(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 - 영속(managed) : 영속성 컨텍스트에 저장된 상태- 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed) : 삭제된 상태 * 비영속// 객체를 생성한 상태(비영속)Member member = new Member();member.setId("member1");..

* Entity Manager란?Entity Manager는 내부적으로 영속성 컨텍스트를 유지하며, 현재 관리 중인 엔티티 객체들을 캐싱하고 관리한다. * Entity Manager 생성 과정 1. 엔티티 매니저 팩토리 생성JPA를 시작하기 위해 persistence.xml의 설정 정보를 사용해서 엔티티 매니저 팩토리를 생성해야 한다.EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");엔티티 매니저 팩토리를 생성할 때, JPA 구현체에 따라서 데이터베이스 커넥션 풀도 생성할 수 있으므로 비용이 크다. 따라서 엔티티 매니지 팩토리는 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야 한다. 2. 엔티티 매니저 생성Ent..

* JPA란?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. * ORM이란?ORM(Object-Relational Mapping)은 객체와 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. * MyBatis vs JPA특징MyBatisJPA방식SQL 기반 매핑객체 중심 매핑 (ORM)쿼리 작성 방식직접 SQL 작성 (XML 또는 Annotation)JPQL, Criteria API, Native SQL성능SQL 튜닝 가능 (최적화 용이)캐싱, 지연 로딩 지원 (대량 데이터 처리 유리)복잡한 쿼리복잡한 JOIN, 서브쿼리 최적화 가능복잡한 쿼..

* 동기(Synchronous) vs 비동기(Asynchronous)동기(Synchronous)하나의 작업이 끝나야 다음 작업이 실행됨 (순차적 실행)요청을 보내면 응답이 올 때까지 대기단순하지만, 응답 시간이 길면 전체적인 성능 저하 가능비동기(Asynchronous)요청을 보내고 응답을 기다리지 않고 다음 작업을 수행응답이 오면 별도로 처리멀티스레딩을 활용하여 여러 작업을 병렬로 처리 가능 * 동기 코드 예제(Java)public class SyncTest { public static void main(String[] args) { System.out.println("1"); printA(); System.out.println("2"); Syst..

* 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 논리적인 작업의 단위를 의미한다. 여러 작업이 하나의 단일 작업처럼 수행되도록 보장하여 데이터의 일관성과 무결성을 유지하는 역할을 한다. * 트랜잭션의 4가지 특성(ACID)원자성 (Atomicity)모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함중간에 오류가 발생하면 모든 작업이 롤백(Rollback)예: 송금 시, 돈을 보내는 작업과 받는 작업이 모두 성공하거나 둘 다 취소됨일관성 (Consistency)트랜잭션 전후로 데이터베이스의 상태가 일관되어야 함예: 은행 계좌에서 출금 후에도 총 잔액은 변하지 않음격리성 (Isolation)동시에 수행되는 트랜잭션이 서로 영향을 미치지 않도록 보장예: 두 사용자가 동시에 같은 상품을 구..
* Publish-Subscribe (Pub-Sub) 패턴이란?Publish-Subscribe(이하 Pub-Sub) 패턴은 발행자(Publisher)와 구독자(Subscriber) 간의 메시지 전달을 위한 비동기 통신 모델이다. 직접적인 연결 없이 중앙 브로커(Message Broker)를 통해 메시지를 주고받는다. * Pub-Sub의 핵심 요소Publisher(발행자)메시지를 생성하고 특정 토픽(Topic)으로 발행한다.구독자의 존재 여부를 신경 쓰지 않는다.Subscriber(구독자)특정 토픽(Topic)을 구독하고, 해당 토픽의 메시지를 전달받는다.발행자가 누구인지 알 필요가 없다.Message Broker(중앙 브로커)발행자가 보낸 메시지를 구독자에게 전달하는 중개 역할을 한다.대표적인 브로커:..
* 사용자 분류루트 계정 : 모든 권한을 가진 특별한 사용자(UID 값이 0)시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정사용자 계정 : 실제 리눅스 사용자를 위한 계정(관리자에게 권한을 부여받아 사용)→ 리눅스에서는 사용자를 root(관리자)와 일반 사용자로 구분.각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID로 관리 * 리눅스 계정과 관련된 명령어들현재 호스트에 로그인 되어 있는 모든 사용자 출력$ users모든 사용자 정보 자세히 출력(터미널 종류, 로그인 시각 등 기본적으로 출력)$ who [options]계정 전체 확인$ cat /etc/passwdroot 암호 설정$ sudo passwd rootroot 로그인# 현재 계정에서 root 권한을 이용하여 명령어를 실행할 ..
의존성 주입에는 대표적으로 2가지가 있는데, 수정자 주입과 생성자 주입이다. 이 2가지 의존성 주입에 대해 알아보고자 한다.1. 수정자 주입 (Setter Injection)방법: 객체가 생성된 후에 setter 메서드를 통해 의존성을 주입한다.장점:유연성이 높아서, 의존성이 필요하지 않을 때도 객체를 생성할 수 있다.의존성이 선택적(optional)인 경우에 적합하다.단점:의존성이 주입되지 않아도 객체가 생성되기 때문에, 객체의 필수 의존성이 누락될 위험이 있다.주입 여부를 확인하는 로직을 추가로 작성해야 할 수 있다.2. 생성자 주입 (Constructor Injection)방법: 객체가 생성될 때, 생성자를 통해 필요한 의존성을 모두 주입한다.장점:의존성이 객체 생성 시에 반드시 주입되어야 하므로,..
전략 패턴 : 개방 폐쇄 원칙의 실현에 가장 잘 들어 맞는 패턴. 전략 패턴은 자신의 기능 맥락에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴.라이브러리 vs 프레임워크 : 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용한다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.Spring Bean 오브젝트란? : 스프링에서 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트. 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주..
* 개요 Enum은 상수의 집합을 정의할 때 사용되는 타입이다. 예를 들어, 월, 일, 색상 등의 상수 값을 담는다. 자바에서는 Enum이 다른 언어보다 더 활발히 활용되며, 상수 뿐만 아니라 메서드를 집어넣어 관리할 수도 있다. Enum을 기반으로 상수 집합을 관리한다면, 코드를 리팩토링할 때 상수 집합에 대한 로직 수정 시 이 부분만 수정하면 된다는 장점이 있다. 또한 thread-safe 하기 때문에 싱글톤 패턴을 만들 때 도움이 된다. * 예제 public enum Day { MONDAY("월요일"), TUESDAY("화요일"), WEDNESDAY("수요일"), THURSDAY("목요일"), FRIDAY("금요일"), SATURDAY("토요일"), SUNDAY("일요일"); private fina..