
Q1. Spring에서 트랜잭션 관리를 어떻게 할 수 있는지 설명하고, @Transactional의 동작 원리를 설명해주세요.더보기📌 Spring의 트랜잭션 관리 방식스프링은 트랜잭션을 처리할 때 선언적 트랜잭션 관리(Declarative Transaction Management) 방식을 제공하며, 이를 @Transactional을 통해 쉽게 적용할 수 있음.@Servicepublic class OrderService { @Transactional public void placeOrder() { // 1. 트랜잭션 시작 // 2. 주문 생성 로직 수행 // 3. 결제 로직 수행 // 4. 재고 감소 로직 수행 // 5. 트랜잭션 ..

Q1. Spring Framework의 핵심 개념인 IoC(Inversion of Control)와 DI(Dependency Injection)의 차이를 설명해보세요.더보기IoC (Inversion of Control, 제어의 역전)기존에는 개발자가 객체를 생성하고 생명주기를 관리했지만, IoC 컨테이너가 이 역할을 대신 수행개발자는 객체의 생성·소멸을 직접 제어하지 않고, 필요할 때 컨테이너가 제공해 줌이를 통해 객체 간의 결합도를 낮추고 유지보수성을 높일 수 있음✅ DI (Dependency Injection, 의존성 주입)IoC의 구현 방식 중 하나기존에는 new 키워드를 사용해 직접 객체를 생성했지만, DI를 사용하면 외부에서 객체를 주입받음DI 방식:생성자 주입Setter 주입필드 주입 (@Au..

템플릿 콜백 패턴은 전략 패턴의 변형 패턴입니다. 예시 코드를 제시하며 전략 패턴 이전의 코드 -> 전략 패턴 코드 -> 템플릿 콜백 패턴 코드 의 변경점을 확인해보겠습니다. 전략 패턴 이전 코드 V1 class BeforeStrategyV1 { void someMethod1() { System.out.println("A") System.out.println("이 부분이 핵심 1 메서드"); System.out.println("C"); } void someMethod2() { System.out.println("A"); System.out.println("이 부분이 핵심 2 메서드"); System.out.println("C"); } } 해당 코드를 보면 someMethod에 공통되는 부분이 있고 그 사..

스프링 트랜잭션 추상화 서로 다른 데이터 접근 기술들은 트랜잭션을 처리하는 방식의 차이가 있다. JDBC 트랜잭션 public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직 bizLogic(con, fromId, toId, money); con.commit(); //성공시 커밋 } catch (Exception e) { con.rollback(); //실패시 롤백 throw new IllegalStateException(e); } fi..

여기서의 포스팅은 맛보기 수육 Spring Data의 등장 관계형 데이터베이스 중심의 세상에서 여러 데이터 관련 신흥 세력(기술)들이 등장 기술이 다른 것이지, "데이터"를 보관하고 관리한다는 부분에 있어 공통점이 있는 것을 발견 동일 인터페이스 기반, 페이징 처리 등 추상화를 통해 공통으로 기술을 제공할 수 있게 된다. 공통 기능 제공 - https://spring.io/projects/spring-data Spring Data Spring Data’s mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of t..

맛보기 수육 JPA(Java Persistence API) - 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. ORM(Object-Relational Mapping) - Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻 JPA가 SQL Mapper(JdbcTemplate, MyBatis)보다 좋은 점 SQL을 작성하지 않고 DB를 조작할 수 있다. 유지보수 측면에서 도움이 된다. ( 쿼리를 새로 작성하지 않음, 매핑 정보가 Class ) -> 추후 강의(JPA강의)에서 더욱 자세하게 정리 ORM의 존재 의의 - SQL 중심적인 개발의 문제점 RDB에 접근하기 위한 언어는 SQL, 우리는 CRUD를 무한 반복하며 쿼리를 작성한다. 매핑 작업을 할수..

MyBatis의 특징, 언제 사용해야 하는지 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper SQL을 XML에 편리하게 작성할 수 있다. ( 자바 코드에서 사용하지 않아 혼동하지 않을 수 있음 ) 동적 쿼리를 편안하게 작성할 수 있다. // 자바에서 동적 쿼리 String sql = "select id, item_name, price, quantity from item"; //동적 쿼리 if (StringUtils.hasText(itemName) || maxPrice != null) { sql += " where"; } boolean andFlag = false; if (StringUtils.hasText(itemName)) { sql += " item_name like conca..

DTO(Data Transfer Object) - 데이터 전송 객체 기능은 없고, 데이터를 전달하는 용도로 사용하는 객체 용도를 명확하게 하기 위해 접미어로 사용하자 JdbcTemplate spring-jdbc 라이브러리에 포함, 스프링을 사용한다면 별도의 설정 없이 사용할 수 있다. 템플릿 콜백 패턴을 사용해서, 대부분의 반복 작업을 대신 처리해준다. SQL을 작성하여 파라미터를 설정하면 사용할 수 있다. ( ? 대신 : name 사용 가능 ) 동적 쿼리 문제를 해결하지 못한다. 파라미터 전달 방법 1. Map 사용 2. MapSqlParameterSource(SqlParameterSource의 구현체) 메서드 체인을 통해 편리하기 Sql 타입을 지정할 수 있다. 3. BeanPropertySqlPar..

자바 예외 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object 이다. Throwable : 최상위 예외이다. 하위에 Exception 과 Error 가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. ( 언체크 예외 ) 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다. Excepti..

트랜잭션(Transaction) 우리가 데이터베이스를 사용하는 이유 중 하나인 개념 트랜잭션 트랜잭션은 하나의 작업을 안전하게 처리하도록 보장해주는 개념이다. 작업이 성공하여 데이터베이스에 정상 반영하는 것을 커밋, Commit 작업이 실패하여 이전으로 되돌리는 것을 롤백, Rollback 트랜잭션의 ACID Atomicity, 원자성 - 트랜잭션 내에서 실행한 작업은 모두 실패하거나 모두 성공해야 한다. Consistency, 일관성 - 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. Isolation, 격리성 - 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않게 격리한다. 격리 수준을 설정함 Durability, 지속성 - 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야..