MySQL에서의 트랜잭션
·
💻 개발/MySQL
MySQL에서의 트랜잭션 MyISAM은 트랜잭션을 지원하지 않음 InnoDB는 트랜잭션을 지원함 InnoDB 엔진은 쿼리 중 일부라도 오류가 발생하면 전체를 원상태로 만들어 두는 트랜잭션의 원칙을 따른다. MyISAM은 일부 오류가 발생하는 경우 부분 업데이트(Partial Update) 현상이 발생한다. 부분 업데이트 현상은 데이터의 정합성을 맞추는 작업을 어렵게 만든다. 트랜잭션이란 애플리케이션 개발에서 고민해야할 문제를 줄여 주는 아주 필수적인 DBMS의 기능이다. 트랜잭션 구현시 주의사항 트랜잭션은 DBMS 커넥션과 마찬가지로 꼭 필요한 최소의 코드에만 적용해야 한다. (프로그램 코드에서 트랜잭션의 범위를 최소화) 외부 네트워크 작업(메일, 큐 발송 등)은 반드시 트랜잭션에서 배제해야 한다. (롱..
Ubuntu에 Nginx 설치하고 실행 해보기(feat. Docker)
·
💻 개발/Nginx
회사에서 nginx 설정을 볼 일이 생겼는데 직접 설정 해본 경험이 없어서 설정파일이 어디 있는지도 몰랐다. (..) 집에 있는 맥북에 nginx를 설치해서 설정을 이것 저것 해 보면서 공부를 하고 싶었으나, 맥에 직접 설치하면 괜히 지저분해 질 것 같아서 Docker를 이용해 설치를 해보았다. 도커 이미지 받기(pull) 도커 허브(https://hub.docker.com)에 가면 도커에서 제공하는 여러 이미지를 볼 수 있다. nginx 공식 이미지도 있긴한데, 나는 직접 설치하는 것 까지 해보고 싶어서 ubuntu 이미지를 받았다. 커맨드에서 아래 명령어를 입력해 ubuntu 이미지를 받는다. ➜ ~ docker pull ubuntu 다운 받은 이미지 목록을 아래 명령어로 확인한다. ➜ ~ docke..
Mockito : Mock 리스트를 주입하고 테스트 하기
·
💻 개발/Java
상황 스프링을 사용하여 빈을 주입 받을때, 같은 타입(interface)을 구현한 빈들을 아래와 같이 컬렉션으로 주입 받아 사용하는 경우가 있다. public interface Validator { void validate(Order order); } @Service public class OrderValidationService { @Autowired private List validatorList; public void validate(Order order) { for (Validator component : validatorList) { component.validate(order); } } } 단위 테스트 프레임워크로 JUnit을 사용하고 Mockito 라이브러리를 사용할 때, OrderValid..
Java Stream에서 allMatch() 사용시 주의할 점
·
💻 개발/Java
Stream.allMatch() Java 8에 포함된 Stream 클래스에는 모든 요소들이 주어진 조건에 만족하는지 여부를 검사하는 allMatch()메서드를 제공한다. 예를 들어, 모든 회원의 나이가 5살 이상인지 검사하는 테스트 코드를 다음과 같이 작성할 수 있다. @Test public void allMatchTest1()) { List members = new ArrayList(); members.add(Member.withAge(10)); members.add(Member.withAge(20)); members.add(Member.withAge(30)); boolean result = members.stream().allMatch(member -> member.getAge() > 5); asse..