Spring

·Spring/JDBC
서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋다.인터페이스를 이용하기특정 기술에 종속하지 않는 순수한 인터페이스를 만들어서 인터페이스 의존하면 된다.하지만 인터페이스를 도입해도 추상 메서드에 throw SQLException을 던져줘야 한다.구현클래스의 메소드에 throw SQLException을 하려해도 구현 클래스의 메서드도 예외를 던질 수 있다.참고로 구현 클래스의 메서드에 선언할 수 있는 예외는 부모 타입에서 던진 예외와 같거나 하위 타입이어야 한다.  예를 들어서 인터페이스 메서드에 throws Exception 를 선언하면, 구현 클래스 메서드에 throws SQLException 는 가능하다. SQLException 은 Exception 의 하위 타입이기 ..
·Spring/JDBC
데이터소스와 트랜잭션 매니저를 스프링 빈으로 직접 등록 @BeanDataSource dataSource() {return new DriverManagerDataSource(URL, USERNAME, PASSWORD); }@BeanPlatformTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource()); }스프링 부트가 등장하기 이전에는 데이터소스와 트랜잭션 매니저를 개발자가 직접 스프링 빈ㄴ으로 등록해서 사용했다.그런데 스프링 부트로 개발을 시작한 개발자라면 직접 등록한 적이 없다.기존에는 직접 빈에 등록해야 했지만 스프링 부트가 나오면서 많은 부분이 자동화되었다. 데이터소스 - 자동 등록스프링..
·Spring/JDBC
프록시를 도입하기 전에는 기존처럼 서비스의 로직에서 트랜잭션을 직접 시작한다.프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 서비스 객체를 명확하게 분리할 수 있다.트랜잭션 프록시가 트랜잭션 처리 로직을 모두 가져간다. 그리고 트랜잭션을 시작한 후에 실제 서비스를 대신 호출한다. 트랜잭션 프록시 덕분에 서비스 계층에는 순수한 비즈니즈 로직만 남길 수 있다. 스프링이 제공하는 트랜잭션 AOP스프링이 제공하는 AOP 기능을 사용하면 프록시를 매우 편리하게 적용할 수 있다.물론 스프링 AOP를 직접 사용해서 트랜잭션을 처리해도 되지만, 트랜잭션은 매우 중요한 기능이고, 전세계 누구  나 다 사용하는 기능이다. 스프링은 트랜잭션 AOP를 처리하기 위한 모든 기능을 제공한다. 스프링 부트를 ..
·Spring/JDBC
트랜잭션 매니저에서 트랜잭션을 사용하는 로직을 보면 다음과 같은 패턴이 반복된다.//트랜잭션 시작TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());try {//비즈니스 로직bizLogic(fromId, toId, money); transactionManager.commit(status); //성공시 커밋 } catch (Exception e) { transactionManager.rollback(status); //실패시 롤백 throw new IllegalStateException(e);}트랜잭션을 시작하고, 비즈니스 로직을 실행하고, 성공하면 커밋하고, 예외가 발생해서..
동그리담
'Spring' 카테고리의 글 목록 (5 Page)