스프링
-
스프링 트랜잭션 이해스프링/스프링 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..
-
데이터 접근 기술 - 테스트스프링/스프링 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은 체크예..
-
자바 예외 이해스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 9. 20:48
예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해서는 먼저 자바 기본 예외에 대한 이해가 필요하다. 예외는 자바 언어의 기본 문법에 들어가기 때문에 대부분 아는 내용일 것이다. 예외의 기본 내용을 간단히 복습하고, 실무에 필요한 체크 예외와 언체크 예외의 차이와 활용 방안에 대해서도 알아보자. Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예..
-
스프링과 문제 해결 - 트랜잭션스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 8. 20:59
여러가지 애플리케이션 구조가 있지만 많이 사용되는 방법은 역할에 따라 3가지 계층으로 나누는 것이다. 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 주 사용 기술: 서블릿과 HTTP같은 웹 기술, 스프링 MVC 서비스 계층 비즈니스 로직을 담당 주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술: JDBC, JPA, File, Mongo... 이중 가장 중요한 곳은 바로 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI(웹)과 관련된 부분이 변하고, 데이터 저장 기술은 다른 기술로 변경해도, 비즈니스 로직은 최대한 변경업이 유지되어야 한다. 이렇게 하기 위해서는 서비..