전체 글(171)
-
스프링 DB 테스트
2.1 여러 함수를 테스트하다보면 중복이 발생해서 오류가 뜨는 경우가 많다. BeforeEach AfterEach 로 데이터베이스에서 일일이 초기화시키며 사용할 수도 있지만 불편하다. 그래서 트랜잭션을 이용해야 한다. @Transactional 은 테스트에서 사용하면 성공적으로 메서드가 수행되도 커밋하지 않고 롤백한다. 커밋을 하고 싶으면 @Commit 을 별도로 붙여주면 된다. 임베디드 데이터베이스 (H2) 아무런 설정도 하지 않으면 자바에서 메모리 모드로 동작하는 내장 데이터베이스를 제공해준다. 내용 끝
2023.02.01 -
스프링 db2 - JdbcTemplate 사용 정보
1/31 기본 JdbcTemplate private JdbcTemplate template; //데이터 소스 주입 public JdbcTemplateItemRepositoryV1(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } * save / SQL query 문장 (PK : id , 데이터베이스에서 자동 생성) public Item save(Item item) { String sql = "insert into item(item_name, price, quantity) values (?,?,?)"; - 순서대로 파마티러를 전달 받는다. KeyHolder keyHolder = new GeneratedKeyHolder(); /..
2023.01.31 -
스프링 db1 - JdbcTemplate
1/30 * 트랜잭션 처리 코드 문제 (반복, DI/OCP 원칙 X , 복잡) - 트랜잭션을 처리하기 위한 코드를 작성하다 보니 비지니스 로직보다 트랜잭션 처리 코드가 더 길어졌다. - 커넥션을 트랜잭션 동기화 매니저 -> 쓰레드 로컬에 보관 후 로직 수행시 트랜잭션이 시작된 커넥션을 반환받아 사용하는 방법으로 변경 - 하지만 트랜잭션 처리 코드가 반복되어 TransactionTemplate이 등장. 최소화되었지만 서비스 계층에서 트랜잭션을 처리하는 기술 로직이 들어가있는 것은 동일했다. - 스프링 AOP @Transactional 등장. 해당 로직에 트랜잭션을 설정하면 트랜잭션 기능을 처리해준다. (데이터소스와 트랜잭션 매니저는 설정해주면 스프링 컨테이너가 알아서 해준다. * 예외 처리 (반복, 특정 ..
2023.01.30 -
스프링 db - 예외 처리 반복 해결
1/30 기존 코드는 모두 체크 예외(SQLException)에 종속되어 있다. -> 향후 새로운 기술로 변경할 때 코드를 전부 변경해줘야 한다. 문제 해결 방향 - 예외 누수 해결 - 반복 예외 던지기 제거 * 런타임 예외 이용하기 - RuntimeException을 상속 받은 우리만의 런타임예외 만들기 //RuntimeException 상속 public class MyDbException extends RuntimeException { public MyDbException() { } public MyDbException(String message) { super(message); } public MyDbException(String message, Throwable cause) { super(mess..
2023.01.30 -
예외 (Exception) 간단 정리
1/29 트랜잭션에 대해서 공부하기 위해서 예외 관련해서 간단하게 정리하려고 한다. * Checked Exception / Unchecked Exception * Checked Exception -> RuntimeException 을 상속받지 않은 예외 - Compile 오류 O - 예외 발생 시 롤백X - 반드시 throws 예외를 처리해야 한다. - ex) SQLException, IOExeption, FileNotFoundException 등 * Unchecked Exception -> RuntimeException 을 상속받은 예외 - Compile 오류 X - 예외 발생 시 롤백O - 명시적인 처리를 강제하지 않는다. (throws 굳이 안 써도 된다.) - NullPointException, ..
2023.01.29 -
프로그래머스 다음에 올 숫자
1/27 굉장히 쉬웠다... 그래도 그냥 기록용이니까 올린다. 난이도 0 은 정답률 낮은거 10문제정도만 풀고 넘어가야겠다. class Solution { public int solution(String[] babbling) { int answer = 0; String[] strArr = {"aya", "ye", "woo", "ma"}; for(int i=0; i
2023.01.27