
데이터베이스의 index? Index는 책의 목차, 색인과 같은 역할을 담당하는 데이터베이스 객체로써 테이블과 독립적으로 존재합니다. 하지만 테이블에 의존적이기에 해당 테이블이 삭제될 경우 같이 제거되게 됩니다. 존재하는 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 구조로 묶어 저장하고, 정렬된 상태를 유지하기에 저장, 수정, 삭제 기능들의 성능을 희생하고 빠른 조회를 제공하는 것이 Index의 사용 목적입니다. 기본 제공되는 Index? 기본적으로 제공되는 Index는 PK index 입니다. InnoDB는 설계상 이유 때문에 모든 테이블에 PK가 필요한데요. 개발자가 테이블에 PK를 작성하지 않는다면, 암시적으로 PK를 생성하여 레코드를 탐색하고 인덱스를 생성하는데 사용되게 됩니다. Prima..

잘못된 내용에 대해서는 댓글 부탁드립니다. Concurrency 하나의 코어가 여러 프로세스를 번갈아가며 실행하는 것을 의미한다. 이는 사용자에게 동시에 실행되는 것처럼 보이게 만드는 효과를 가지며, 단위 시간 내에 더 많은 일을 처리한다. 프로세스 간의 컨텍스트 스위칭이 발생한다. Concurrency의 장단점 장점 CPU의 처리량이 증가한다. 자원의 활용도가 증가한다. 프로세스 간의 대기시간이 감소된다. 단점 Context Switching에 대한 Overhead가 발생한다. Parallelism 하나의 프로세스를 분할하여 처리 여러 개의 코어가 하나의 프로세스의 작업을 분할하여 처리하는 것을 의미할 수 있다. 이는 내부적으로 동작하는 스레드의 개수만큼 CPU에 할당할 수 있음을 의미한다. 화면을 랜..

서비스 메서드에 Transcational을 사용하였을 때와 사용하지 않았을 때, 흐름을 정리해보았습니다. 스프링 @Transaction 미적용 (JDBC API - Local Transaction) 기본적으로 JDBC의 트랜잭션은 하나의 Connection Instance를 생성하고 통신하며 종료하는 흐름과 같이 동작하게 된다. 즉 코드에 존재하는 DAO 로직들은 각각의 트랜잭션 안에서 연산을 진행하게 되는 것이다. 이때의 트랜잭션을 로컬 트랜잭션이라고 한다. 해당 메서드 내에서는 3개의 트랜잭션이 동작하며, 이는 내부에서 하나의 DAO 로직이 실패하더라도 다른 로직들은 성공하고 반영될 수 있는 상태임을 의미한다. 각각의 로직들은 Connection Pool에서 리소스 전달받아 새로운 Connection..

내용 추가 : resultType을 entity, dto 등의 Value Object으로 지정할 경우 resultMap을 생성한다. 마이바티스와 롬복을 같이 사용하는 것은 처음이다보니 사소한 실수를 통해 여러 예외를 만나게 되는 것 같다. User 도메인을 개발하기 시작했기에 엔티티를 작성하고 테스트 데이터베이스 스키마와 데이터를 추가한 뒤 MapperTest를 통해 조회 테스트를 진행하던 중 문제가 발생하였다. Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 9 out of bounds for leng..

Auto-Configuration Conditions 주어지는 여러가지 조건들을 이용하여 Spring Application 실행시 사용할 Bean Definition을 선택할 수 있도록하는 Annotation들의 집합이다. @ConditionalOnClass 어노테이션의 인자로 받은 클래스가 존재할 때, 해당 주석이 적용된 Configuration class의 Java기반 Bean Definition들을 등록한다. @ConditionalOnMissingClass 어노테이션의 인자로 받은 클래스가 존재하지 않을 때, 해당 주석이 적용된 Configuration class의 Java기반 Bean Definition들을 등록한다. @ConditionalOnBean 어노테이션의 인자로 받은 Bean ID가 존재..

주의 : 틀린 내용이 있을 수 있습니다..! 내용을 보완 중에 있습니다. SpringBootConfiguration? 개발자의 편의를 위해 EnableConfiguration과 SpringBootConfiguration, 그리고 Component Scan을 합쳐 하나로 제공한다. // 기존에 작성하던 방식을 좀더 간편하게 하였다. @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurat..

9주 차 시작! 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try Statements try { // Do SomeThing.. } 예외가 발생할 수 있는 로직을 실행할 때 예외가 발생하는 것을 잡아내기 위해 사용하는 Statements이다. 주로 JDBC Connection이나 File Reader, API에 대한 URL Connection 등을 처리하는 로직을 감싸는 데 사용한다. Ex) JDBC try { connection = dataSource.getConnection(); //SQLException 이 발생 가능하다. ResultSet resultSet = connection.prepareStatement("SELECT * FROM USER") ..

Logging? 서비스 동작 시 시스템 상태, 작동 정보를 시간의 경과에 따라 기록하는 것을 말한다. 로깅을 사용하는 이유? 서비스 동작 상태를 파악하고, 발생한 장애를 알려주거나, 파악하기 위해 사용한다. 그러기 위해서는 Log Message에 Context를 담아주어야 한다. 어떤 위치에서 어떤 Param을 사용하였고 어떤 것이 실패하였다는 느낌으로 작성하자. 로깅을 사용할 때 주의할 점? Log 파일 / DB 생명 주기 & 저장소 용량 개인 정보 시스템 주요 정보 (시스템 보안, 계정 정보) Logging을 사용하는 방법? Linux System API(sysout) Java API(sysout) Java API(util.Logging) Logging Framework Spring Boot에서 제공..

8주 차 시작! 인터페이스 정의하는 방법 인터페이스란? 인터페이스는 (구현한) 하위 인스턴스를 참조할 수 있는 타입이며, 해당 인스턴스가 어떠한 행위를 할 수 있는지 클라이언트에게 알려주는 일종의 계약서 역할을 한다. 클라이언트는 해당 행위를 알려주고 구현부는 해당 타입의 인스턴스에게 맡김으로써 정보 은닉을 지킬 수 있다. 이는 반대로 생각한다면 클라이언트는 구현부의 변경에 따른 여파가 없음을 의미한다. 인터페이스를 정의하는 방법? {Access-Level-Modifier} interface {Name} { // JDK 7까지는 기본적으로 Static Method를 제외하고 추상 타입의 public Method 만을 // 선언할 수 있다. // 이 Method는 해당 Interface를 구현하는 Clas..

알게 모르게 한 번이라도 들어본 JDBC를 정리해보았습니다. Java Database Connectivity? Java와 여러 가지 데이터베이스 간의 연결을 위하여 제공되는 표준 인터페이스이다. DB 벤더나, 써드파티 관련 라이브러리에서 JDBC를 구현한 드라이버를 제공한다. DB 데이터 접근을 위해 계층 처리 모델을 제공한다. (기본 2계층 사용, 3계층 지원) 데이터베이스 벤더마다 각각의 SQL 문, 작성 방식을 사용함으로써 발생했던 문제점을 해결하였다. 달랐던 메서드, 구조, 전역 변수 등의 모든 문법을 통일시켜 API로 명세한 것이다. JDBC 구성 요소 JDBC DriverManager DB의 드라이버 목록을 관리하는 클래스 Java Application의 연결 요청을 적절한 DB Driver와..
- Total
- Today
- Yesterday
- Local Cache
- spring
- Switch
- 소비자 관점의 api 설계 패턴과 사례 훑어보기
- Distributed Cache
- HTTP
- 게으른개발자컨퍼런스
- URI
- mybatis
- java
- 근황
- cglib
- THP
- JVM
- Data Locality
- URN
- 게으른 개발자 컨퍼런스
- RPC
- hypermedia
- Url
- configuration
- JPA
- Cache Design
- rabbitmq
- lambda
- Global Cache
- AMQP
- spring AOP
- JDK Dynamic Proxy
- RESTful
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |