분류 전체보기

아래 풀이가 이해되지 않아서 그림으로 풀어보면서 이해 sum_value + (현재의 음식 시간 - 이전 음식 시간) * 현재 음식 개수와 k 비교
커넥션 풀 이해 데이터베이스 커넥션을 획득할 때는 다음과 같은 과정을 거친다. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많이 많이 소모되는 일이다. 고객이 애플리케이션을 사용할 때, SQL..
JDBC를 사용해서 애플리케이션 개발해보기 회원 데이터를 데이터베이스에 관리하는 기능을 개발 Member @Data public class Member { private String memberId; private int money; public Member() { } public Member(String memberId, int money) { this.memberId = memberId; this.money = money; } } JDBC를 사용해서 이렇게 만든 회원 객체를 데이터베이스에 저장해보자. 등록 MemberRepositoryV0 - 회원 등록 @Slf4j public class MemberRepositoryV0 { public Member save(Member member) throws S..
H2 데이터베이스 연결하기 connectionCosnt라는 클래스 만들어서 연결 정보를 입력하자 데이터베이스에 접속하는데 필요한 기본 정보를 편리하게 사용할 수 있도록 상수로 만들었다. public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = ""; } JDBC를 사용해서 실제 데이터베이스에 연결하는 코드 작성 DBConnectionUtil @Slf4j public class DBConnectionUtil { public sta..
스프링부트를 사용해서 jdbc를 이해해보자 스프링 프로젝트 생성할 때 JDBC API, H2 Database, Lombok 선택 H2 데이터베이스 설정 MySQL을 많이 사용하지만 H2 데이터베이스는 개발이나 테스트 용도고 사용하기 좋은 가볍고 편리한 DB이다. 윈도우 사용자일 경우 cmd에서 H2/bin 폴더로 이동한 다음 h2.bat 를 입력해주면 실행된다. 데이터베이스 파일 생성 방법 JDBC URL에 다음 입력 : jdbc:h2:~/test (test말고 다른 걸로 설정해도 된다) 그 후 연결을 눌러주면 ~/test.mv.db 파일 생성을 확인한다 이후부터는 jdbc:h2:tcp://localhost/~/test 이렇게 접속 h2 데이터베이스를 웹 콘솔로 접근하기 위해서는 http://localh..
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애 플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자. 이 NetworkClient 는 애플리케이션 시작 시점에 connect() 를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다. public class NetworkClient{ private String url; //접속해야하는 서버 url public NetworkClient() { System.out.println("생성자 호출, url = " + u..
자동 빈 등록을 기본으로 사용하자 어떤 경우에 컴포넌트 스캔과 자동 주입을 사용하고, 어떤 경우에 설정 정보를 통해서 수동으로 빈을 등록하고, 의존관계도 수동으로 주입해야할까 → 자동을 선호하는 추세 스프링은 @Component뿐만 아니라 @Controller , @Service , @Repository 처럼 계층에 맞추어 일반적인 애플 리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 자동 빈 등록을 사용해도 OCP, DIP를 지킬 수 있다 설정 정보를 기반으로 애플리케이션을 구성하는 부분과 실제 동작하는 부분을 명확하게 나누는 것이 이상적 이지만, 개발자 입장에서 스프링 빈을 하나 등록할 때 @Component 만 넣어주면 끝나는 일을 @Configuration 설정 정보에 가서 @Bean 을 적..
할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보자. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다 public class AllBeanTest { @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPric..
@Autowired 는 타입(Type)으로 조회한다. 타입으로 조회하기 때문에, 마치 다음 코드와 유사하게 동작한다. ac.getBean(DiscountPolicy.class) 타입으로 조회하면 선택된 빈이 2개 이상일 때 문제가 발생한다 예를 들어서 DiscountPolicy 타입의 빈 2개가 등록되고 DiscountPolicy 타입의 빈을 주입받으려고 한다고 하자 @Component public class FixDiscountPolicy implements DiscountPolicy {} @Component public class RateDiscountPolicy implements DiscountPolicy {} @Autowired private DiscountPolicy discountPolicy..
hapBday
'분류 전체보기' 카테고리의 글 목록 (20 Page)