반응형

공부/Spring 46

스프링 트랜잭션 전파 2 - 활용

트랜잭션 전파 활용 1 - 예제 프로젝트 비즈니스 요구사항- 회원을 등록하고 조회한다.- 회원에 대한 변경 이력을 추적할 수 있도록 회원 데이터가 변경될 때 변경 이력을 DB LOG 테이블에 남겨야 한다.@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue private Long id; private String username; public Member() { } public Member(String username) { this.username = username; }}- JPA를 통해 관리하는 회원 엔티티이다. @Slf4j@Repository@RequiredArgsConstructorp..

공부/Spring 2025.06.23

스프링 트랜잭션 전파 1 - 커밋, 롤백

스프링 트랜잭션 전파 1 - 커밋 롤백트랜잭션이 둘 이상 있을 때 어떻게 동작하는지 자세히 알아보고, 스프링이 제공하는 트랜잭션 전파(propagation)라는 개념도 알아보자.트랜잭션 전파를 이해하는 과정을 통해서 스프링 트랜잭션의 동작 원리도 더 깊이있게 이해할 수 있다. 우선 간단한 예제 코드로 스프링 트랜잭션을 실행해보자.@Slf4j@SpringBootTestpublic class BasicTxTest { @Autowired PlatformTransactionManager txManager; @TestConfiguration static class Config { @Bean public PlatformTransactionManager transacti..

공부/Spring 2025.06.18

스프링 트랜잭션 이해

스프링 트랜잭션 소개https://surrealcode.tistory.com/145스프링 트랜잭션에 대해서는 위의 링크를 참고하도록 하자. 스프링 트랜잭션 추상화각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식에 차이가 있다. 예를 들어 JDBC기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. JDBC 트랜잭션 코드 예시public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직..

공부/Spring 2025.06.16

데이터 접근 기술 - 활용 방안

스프링 데이터 JPA 예제와 트레이드 오프스프링 데이터 JPA 예제를 다시 한번 돌아보자.- 중간에서 JpaItemRepositoryV2가 어댑터 역할을 해준 덕분에 ItemService가 사용하는 ItemRepository 인터페이스를 그대로 유지할 수 있고, 클라이언트인 ItemService의 코드를 변경하지 않아도 되는 장점이 있다. 고민- 구조를 맞추기 위해서, 중간에 어댑터가 들어가면서 전체 구조가 너무 복잡해지고 사용하는 클래스도 많아지는 단점이 생겼다.- 실제 이 코드를 구현해야 하는 개발자 입장에서 보면 중간에 어댑터도 만들고, 실제 코드까지 만들어야 하는 불편함이 생긴다.- 유지보수 관점에서 ItemService를 변경하지 않고, ItemRepository의 구현체를 변경할 수 있는 장점..

공부/Spring 2025.06.10

데이터 접근 기술 - Querydsl

Querydsl 설정우선 Querydsl을 설정해보자. 스프링 2.x대의 설정과 3.x대의 설정이 다르므로 잘 확인해보자. 2.x 버전 설정//Querydsl 추가implementation 'com.querydsl:querydsl-jpa'annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" 3.x 버전 설정//Querydsl 추가..

공부/Spring 2025.06.09

데이터 접근 기술 - 스프링 데이터 JPA

스프링 데이터 JPA 주요 기능스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다.수 많은 편리한 기능을 제공하지만 가장 대표적인 기능은 다음과 같다. - 공통 인터페이스 기능- 쿼리 메서드 기능 공통 인터페이스 기능- JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능을 제공한다.- 공통화 가능한 기능이 거의 모두 포함되어 있다.- CurdRepository에서 findOne -> findById()로 변경되었다. JpaRepository 사용법public interface ItemRepository extends JpaRepository {}- JpaRepository 인터페이스를 인터페이스 상속받고, 제네릭에 관리할 를 주면 된다.- 그러면 JpaRep..

공부/Spring 2025.06.05

데이터 접근 기술 - JPA

JPA 시작스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술이다.스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공한다. 스프링 + 데이터 접근 기술의 조합을 구글 트렌드로 비교했을 때- 글로벌에서는 스프링 + JPA 조합을 80% 이상 사용한다.- 국내에서도 스프링 + JPA 조합을 50%정도로 사용하고, 2015년도 이후로 점점 증가하는 추세이다. JPA는 스프링 만큼이나 방대하고, 학습해야할 분량도 많다. 하지만 한번 배워두면 데이터 접근 기술에서 매우 큰 생산성 향상을 얻을 수 있다. 대표적으로 JdbcTemplate이나 MyBatis같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지만, JPA를 사용하면 S..

공부/Spring 2025.06.05

데이터 접근 기술 - MyBatis

MyBatis 소개MyBatis는 앞서 설명한 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다. 기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공한다.JdbcTemplate와 비교해서 MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고, 또 동적 쿼리를 매우 편리하게 작성할 수 있다는 점이다. 먼저 SQL이 여러줄에 걸쳐 있을 때 둘을 비교해보자.JDBCTemplate - SQL 여러줄String sql = "update item " + "set item_name=:itemName, price=:price, quantity=:quantity " + "where id=:id"; MyBatis - SQL 여러줄 upd..

공부/Spring 2025.06.04

데이터 접근 기술 - 테스트

테스트 - 데이터베이스 연동데이터 접근 기술에 대해서 더 알아보기 전에 데이터베이스에 연동하는 테스트에 대해서 알아보자. 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다. 지금부터 테스트를 실행할 때 실제 데이터베이스를 연동해서 진행해보자.앞서 개발한 ItemRepositoryTest를 통해서 테스트를 진행할 것이다. 테스트를 실행하기 전에 먼저 지금까지 설정한 application.properties를 확인해보자. main - application.propertiesspring.profiles.active=localspring.datasource.url= jdbc:h2:tcp://localhost/~/testspring.datasource...

공부/Spring 2025.06.02

데이터 접근 기술 - 스프링 JdbcTemplate

JdbcTemplate 소개와 설정SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate은 아주 좋은 선택지이다. JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와준다. 장점- 설정의 편리함 - JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다. 그리고 별도의 복잡한 설정 없이 바로 사용할 수 있다.- 반복 문제 해결 - JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다. - 개발자는 SQL을 작성하고, 전달할 파라미터를 정의하고, 응답 값을 매핑하기만 하면 된다. ..

공부/Spring 2025.05.30
반응형