전체 글
-
스프링 트랜잭션 이해스프링/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2024. 3. 4. 19:53
package org.springframework.transaction; public interface PlatformTransactionManager extends TransactionManager { TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException; } 스프링 트린잭션 추상화 각각의 데이터 접근 기술들은 트랜잭션을 처리하는 ..
-
데이터 접근 기술 - JPA스프링/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 2. 15. 20:51
JPA 시작 스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술이다. 스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공한다. 스프링 + 데이터 접근기술의 조합을 구글 트렌드로 비교했을 때 글로벌에서는 스프링 + JPA 조합을 80%이상 사용한다. 국내에서도 스프링 + JPA 조합을 50%정도 사용하고, 2015년 부터 추세가 점점 늘고있다. JPA는 스프링 만큼이나 방대하고, 학습해야할 분량도 많다. 하지만 한번 배워두면 데이터 접근 기술에서 매우 큰 생산성 향상을 얻을 수 있다. 대표적으로 JdbcTemplate이나 MyBatis 같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지만, JPA를 사용하면 SQL도 J..
-
프로그래머스 기초 - 문자열 여러번 뒤집기코테 2024. 2. 15. 19:36
문제 문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요. class Solution { public String solution(String my_string, int[][] queries) { char[] stringList = my_string.toCharArray(); // my_string을 char 데이터 타입의 배열로 for (int i = 0; i < queries.length; i+=1) { int[] list =..
-
데이터 접근 기술 - MyBatis카테고리 없음 2024. 2. 14. 20:55
#MyBatis mybatis.type-aliases-package=hello.itemservice.domain mybatis.configuration.map-underscore-to-camel-case=true logging.level.hello.itemservice.repository.mybatis=trace MyBatis는 앞서 설명한 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다. 기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공한다. JdbcTemplate과 비교해서 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고, 또 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다. JdbcTemplate SQL 여러줄 예시 Str..
-
데이터 접근 기술 - 테스트스프링/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 2. 14. 20:03
spring.profiles.active=test spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.username=sa logging.level.org.springframework.jdbc=debug 데이터 접근 기술에 대해 더 알아보기 전에 데이터베이스에 연동하는 테스트에 대해서 알아보자 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다. test에 있는 application.properties 파일에도 spring.profiles.active=test spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.dat..
-
데이터 접근 기술 - 스프링 JdbcTemplate스프링/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 2. 13. 20:34
Jdbc Template 소개와 설정 SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate는 아주 좋은 선택지다. JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와준다. 장점 설정의 편리함 JdbcTemplate는 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이고, 별도의 복잡한 설정없이도 사용할 수 있다. 반복 문제 해결 JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복작업을 대신 처리해준다. 개발자는 SQL을 작성하고, 전달할 파라미터를 정의하고, 응답 값을 매핑하기만 하면된다. 우리가 생각할 수 있는 대부분의 반복작업을 대신..
-
참고 - 권장하는 식별자 선택 전략스프링/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 2. 13. 19:20
데이터베이스 기본 키는 다음 3가지 조건을 모두 만족해야 한다. null 값은 허용하지 않는다. 유일해야 한다. 변해선 안된다 테이블의 기본 키를 선택하는 전략은 크게 2가지가 있다. 자연 키(nature key) 비즈니스에 의미가 있는 키 예 : 주민등록번호, 이메일, 전화번호 대리 키(surrogate key) 비즈니스와 관련 없는 임의로 만들어진 키, 대체 키로도 불린다. 예: 오라클 시퀀스, auto_increment, identify, 키생성 테이블 사용 자연 키보다는 대리 키를 권장한다 자연 키와 대리 키는 일장 일단이 있지만 될 수 있으면 대리키의 사용을 권장한다. 예를 들어 자연 키인 전화번호를 기본 키로 선택한다면 그 번호가 유일할 수 있겠지만, 전화번호가 없을 수도 있고 전화번호가 변경..
-
스프링과 문제 해결 - 예외 처리, 반복스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 12. 20:12
체크 예외와 인터페이스 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋다. 이렇게 하기위해서는 예외에 대한 의존도 함께 해결해야한다 예를 들어서 서비스가 처리할 수 없는 SQLException에 대한 의존을 어떻게 제거해야할까? 서비스가 처리할 수 없으므로 런타임 예외로 처리해서 서비스계층에 던지면 된다. 인터페이스 도입 이렇게 인터페이스를 도입하면 MemberService는 MemberRepository 인터페이스에만 의존하면 된다. 이제 구현 기술을 변경하고 싶으면 DI(의존성 주입)를 사용해서 MemberService 코드의 변경 없이 구현 기술을 변경할 수 있다. 왜 이런 인터페이스를 SQLException의 경우에는 쓰지 않을까? SQLException은 체크예..