전체 글88 [TIL 06/30] 스프링 AOP, 스프링 트랜잭션 1. AOP 시작하기 여러 모듈에서 로깅, 트랜잭션과 같이 핵심 비즈니스 로직이 아닌 부가적인 목적으로 필요한 로직이 반복적으로 나타나는 것을 횡단 관심사(cross-cutting concern) 라고 한다. 애플리케이션을 바라보는 관점을 하나하나의 기능에서 횡단 관심사 관점에서 바라보고 핵심 기능과 부가 기능의 분리를 통해 모듈성을 증가시키는 것을 관점 지향 프로그래밍(Aspect-Oriented Programming) 이라고 한다. public void transfer() { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //비즈니스 로직 con.commit(); } catch (Exception e) { co.. 2023. 7. 4. 스프링 빈에 관하여 Bean Spring에서 Bean이란 Spring IoC 컨테이너에 의해 관리되는 객체를 말합니다. Spring bean은 컨테이너에 의해 인스턴스화되고, 의존성을 주입받고, 생애주기동안 관리됩니다. 스프링 컨테이너는 하나 이상의 빈을 관리합니다. 이러한 빈은 컨테이너에 제공하는 configuration metadata를 통해 생성됩니다. Bean definition과 Configuration metadata Configuration metadata는 개발자가 스프링 컨테이너에게 애플리케이션의 객체를 어떻게 인스턴스화, 구성, 조합하는지에 관한 관한 방법을 나타냅니다. 이러한 Configuration metadata는 xml 또는 자바 기반으로 작성할 수 있습니다. 작성한 metadata는 Applica.. 2023. 6. 30. [TIL 06/29] NamedParameterJdbcTemplate, Transaction 1. NamedParameterJdbcTemplate JdbcTemplate은 인덱스 기반의 파라미터 바인딩을 통해서 다음과 같이 작성될 수 있다. @Override public void update(Customer customer) { String sql = "update customers set name = ? where customer_id = ?"; jdbcTemplate.update(sql, customer.getName(), customer.getCustomerId().toString()); } ?를 입력한 자리에 메서드에 전달한 인수가 순서대로 바인딩된다. 순서대로 바인딩하는 것은 편리하지만 잘못된 순서로 입력되면 오류가 발생할 수 있다. 이러한 문제를 보완하기 위해 JdbcTempate은 .. 2023. 6. 30. [TIL 06/28] Connection Pool, DataSource, JdbcTemplate 1. Connection Pool 자바 애플리케이션에서 DB에 쿼리를 날리기 위해 매 요청마다 커넥션을 생성하는 것은 많은 리소스가 소비된다. SQL을 실행하는 시간뿐만 아니라 커넥션을 새롭게 만드는데도 많은 시간이 소요되어 요청에 대한 응답 속도에 영향을 주게 된다. 이러한 문제를 해결하기 위해 커넥션 풀이 등장하였다. 커넥션을 미리 생성해두었다가 필요할 때마다 하나씩 꺼내 쓰고 작업이 종료되면 커넥션 풀에 다시 반환한다. 2. DataSource DataSource는 커넥션을 획득하는 방법에 대해 추상화한 인터페이스이다. 개발자는 커넥션이 DriverManager를 이용해서 만들어지는지, 커넥션 풀을 통해 획득하는지 전혀 알 필요 없이 커넥션을 획득하고, 사용하고, 종료하면 된다. 3. JdbcTem.. 2023. 6. 30. [TIL 06/27] JDBC 1. JDBC JDBC 란? JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. DB 연결, SQL과 과련된 작업을 수행할 수 있는 표준 인터페이스이다. 이를 이용하면 DB 종류에 상관없이 SQL문을 실행하고 처리할 수 있다. 자바 애플리케이션에서 영속성 계층을 처리하기 위해 JDK 1.1에 포함되어 출시한 컴포넌트이다. 아키텍처 JDBC 인터페이스는 JDBC API와 JDBC 드라이버 두 개의 계층으로 나뉜다. 백엔드 엔지니어들은 JDBC API를 이용해서 드라이버와 커넥션을 맺고 쿼리를 날린다. JDBC API는 다음과 같은 기능을 제공한다. Connection -.. 2023. 6. 30. [TIL 06/26] 테스트 1. 단위 테스트 단위 테스트는 일반적으로 함수 수준에서 특정 섹션의 기능을 검증하는 테스트를 말합니다. 백엔드 엔지니어가 가장 집중해야하는 테스트 가장 많이 작성해야 하고 가장 중요한 테스트 특정 메서드가 예상대로 작동하는지 확인하기 위해 작성 하나의 메서드에 여러 가지 테스트를 작성할 수 있으며 정상 흐름 뿐만 아니라 예외적인 상황에 대해서도 테스트를 수행한다. 애플리케이션에서 가장 작은 단위의 테스트이며 보편적으로 하나의 클래스에 대해서 테스트하는 것이라 볼 수 있다. 일반적으로 각 테스트에서 주어져야 하는 입력값 혹은 맥락이 있고(given), 테스트하고자 하는 대상 메서드(when), 검증하고자 하는 결과(then)이 있다. 대체로 하나의 객체는 혼자서 일을 하지 않고 다른 객체들과 협력 관계를.. 2023. 6. 29. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음