묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
예외 처리 질문
안녕하세요.예외 처리 질문드립니다.checked exception을 잡을 때 catch 블럭에서 임의로 발생시킨 MyCheckedException이 아닌 RuntimeException을 잡으려고 하면 여기서 예외 처리를 못하니 throws로 예외를 다시 던져줘서 코드가 에러가 없었는데, unchecked exception을 잡을 때 똑같이 catch 블럭에서 발생된 MyUncheckedException이 아닌 다른 예외를 catch로 선언하고 나서 못 잡을 경우 밖으로 예외를 던지나 보려고 했는데 catch 에서 MyUncheckedException이 아닌 예외 중 어떤 건 에러가 안 나고 어떤 건 에러가 납니다.예를 들어 NullPointerExceptoin으로 잡으려고 하면 코드에 이상이 없고, MyCheckedException으로 잡으려고 하면 에러가 발생합니다. 어차피 둘 다 catch 블럭에서 처리할 수 없어서 밖으로 던질텐데 왜 이런 걸까요 ?public void callCatch(){ try{ client.call(); }catch(NullPointerException e){ System.out.println("예외처리, message = " + e.getMessage()); } System.out.println("정상 흐름"); }public void callCatch(){ try{ client.call(); }catch(MyCheckedException e){ System.out.println("예외처리, message = " + e.getMessage()); } System.out.println("정상 흐름"); }java: exception exception.basic.checked.MyCheckedException is never thrown in body of corresponding try statement
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2-database 오류 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Database "/home/ubuntu/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-224] 90149/90149 (도움말)오류가 발생합니다..구글링을 해보니test.mv.db 를 생성해주어야하더라구요..원래 맨처음에는 잘 됐는데 비번 잘못설정해서 다 삭제하고 다시 설치하였습니다. 일단 설명대로 C:\Users\user에 직접 만들어주었습니다. 하지만 같은 오류가 발생해서 원인을 모르겠습니다 ㅠㅠ.ㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
예제 2번 풀이
예제 2번 &&다음 !가 있는 거면 아닌거 찾는 거 아닌가요? 해설 다시 부탁드립니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
LettuceLock 에러
안녕하세요.올려주신 강의를 보고 따라하다가 에러가 발생하여 질문드립니다.모든 테스트는 정상으로 떨어지나, LettuceLock 테스트만 에러가 발생을 하네요...제가 디버깅 했을 때는 public Boolean lock(Long key) { return redisTemplate .opsForValue() .setIfAbsent(generateKey(key), "lock", Duration.ofMillis(3_000)); }해당 부분이 키를 갖고 오지 못하는 거 같은데, 해결 방법이 있을까요??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정렬
안녕하세요 코드보고 공부하다가 궁금한 점이 생겨서 질문 남깁니다.문제에서 가수가 라이브한 곡 순서대로 부른곡의 길이가 분 단위로 나타난다고 하였습니다.예시에서는 오름차순으로 잘 정렬되어있지만 가수가 라이브한 곡들의 길이가 뒤죽박죽되어있을때도 있을것을 고려해 배열을 정렬해준뒤 강사님의 풀이랑 똑같은 풀이를 적용하였는데 오답이라고 떴습니다.정렬메소드가 들어가면 왜 오답이 뜨는지 궁금합니다 !
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
매뉴얼이 어디있나요?
매뉴얼이 어디있나요?
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스 지역 변수 캡쳐 질문
안녕하세요.자바의 설계상 동기화 등의 문제로 지역 클래스가 생성되 때 지역 변수의 값을 캡쳐하기 때문에 값을 변경하면 컴파일 에러가 난다는 설명에서 문의드릴 게 있습니다.설명해주신 예제로 확인하면 순서가 1.process() 호출 -> 스택 프레임 생성2. 해당 메서드 바디의 코드 실행3. LocalPrinter() 객체 생성인데, 여기서 3번 LocalPrinter() 객체가 생성이 될 때 지역 변수를 쓰는 게 있다면 그 지역 변수를 LocalPrinter() 객체 내부로 변수를 캡쳐해서 활용한다는 것이잖아요 ? 그러면 설명해주신 것과 같이 객체 생성 이후에 값을 변경하려고 하면 동기화 문제가 발생할 수 있어서 자바에서 그렇게 설계를 안했다는 건 이해를 하겠는데, 객체 생성 전에 값을 바꾸는 건 어떻게 이해를 해야 할까요 ? 생성 전에 값을 바꾸면 사실상 객체 생성 이후 캡쳐를 하더라도 바뀐 값으로 캡쳐를 하면 되니 동기화 문제가 전혀 없을 거 같아서요.캡쳐본 중 위에는 객체 생성(캡쳐) 이후 바꾸면 안되는 예시이고 동기화 등을 고려하였을 때 제가 궁금한 건 캡쳐 전의 값 변경이 왜 캡쳐에 영향을 주느냐는 겁니다. (아래 캡쳐본) public Printer process(int param){ int localVar = 1; class LocalPrinter implements Printer{ int value = 0; @Override public void print(){ System.out.println("value = " + value); System.out.println("local value = " + localVar); System.out.println("param = " + param); System.out.println("outInstance = " + outInstance); } } LocalPrinter printer = new LocalPrinter(); localVar = 10; // printer.print(); return printer; }public Printer process(int param){ int localVar = 1; localVar = 10; class LocalPrinter implements Printer{ int value = 0; @Override public void print(){ System.out.println("value = " + value); System.out.println("local value = " + localVar); System.out.println("param = " + param); System.out.println("outInstance = " + outInstance); } } LocalPrinter printer = new LocalPrinter(); //localVar = 10; // printer.print(); return printer; }
-
미해결PZM기반 실무중심 백엔드 부트캠프(프리트레이닝)
섹션 7 51강에서..
interface를 class로 인식하는 것 같아요
-
미해결김영한의 실전 자바 - 중급 1편
내부 클래스 질문이 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 좋은 강의 감사합니다.공부하다가 궁금한 부분이 생겨서 질문 남깁니다.지역 클래스는 지역 변수와 마찬가지로 코드(메서드) 안에 작성해야 하는데 만약 메서드(지역 클래스 밖에 있는) process의 반환 타입을 지역 클래스로는 사용할 수 없는 건가요? 혼자 코드를 작성 해봤는데 컴파일 오류가 떠서 왜 그런건지 이유가 궁금합니다. 내부 클래스는 반환 타입으로 사용이 가능한데 지역 클래스는 안되는 이유가 궁금합니다. 감사합니다
-
미해결김영한의 실전 자바 - 기본편
객체지향 관련하여 질문드립니다.
안녕하세요. 저는 주니어 개발자 입니다. 취업을 위해 스프링 공부에만 급급하여 이해하지도 못한 채 넘어갔던 자바 기초 지식을 이제서야 강사님 강의를 통해 이해가 되는 것 같아 정말 감사드립니다. 현재 제가 있는 실무에서는 객체지향을 잘 사용하고 있지 않은 것 같고 부족하다고 생각되어 이번 강의를 계기로 객체지향 관련해서 더 공부하고 싶다는 생각이 들었습니다. 앞으로 강사님 로드맵 자바 (기초 > 중급 > 고급) -> 스프링 .. 이런식으로 차근차근 들을 예정인데 이 로드맵을 따라가면 더욱 객체지향을 이해할 수 있는지 아니면 따로 추가적으로 공부를 해야할지 궁금하여 질문드립니다. 감사합니다.
-
미해결김영한의 실전 자바 - 중급 1편
내부 인스턴스 질문
안녕하십니까.내부 인스턴스 생성시에 바깥 인스턴스의 참조값을 보관한다고 하셨는데 확인해보고 싶으면 어떻게 해야 할까요 ?참조값을 어떤 필드에 담고 있는지 참조값이 같은지 확인하고 싶습니다 .
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션6 스프링데이터 JPA에서 오류 질문
private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberRepository memberRepository){ this.memberRepository = memberRepository; } 자동 주입을 할 수 없습니다. 'MemberRepository' 타입의 bean이 두 개 이상 있습니다.Beans:memoryMemberRepository (MemoryMemberRepository.java) springDataJpaMemberRepository (SpringDataJpaMemberRepository.java) 라는 오류가 발생합니다 어디를 고쳐야 하는 건가요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
lazy loading 쿼리 문제
2024-06-15T19:47:56.267+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id limit ? 2024-06-15T19:47:56.270+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:INTEGER) <- [1000] 2024-06-15T19:47:56.285+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2024-06-15T19:47:56.285+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [1] 2024-06-15T19:47:56.291+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2024-06-15T19:47:56.291+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [1] 2024-06-15T19:47:56.295+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2024-06-15T19:47:56.296+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [1] 2024-06-15T19:47:56.298+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2024-06-15T19:47:56.298+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [2] 2024-06-15T19:47:56.300+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2024-06-15T19:47:56.300+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [2] 2024-06-15T19:47:56.302+09:00 DEBUG 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2024-06-15T19:47:56.302+09:00 TRACE 12540 --- [jpa1] [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:BIGINT) <- [2] @GetMapping("api/v2/simple-orders") public List<SimpleOrderDto> ordersV2() { List<Order> orders = orderRepository.findAllByString(new OrderSearch()); List<SimpleOrderDto> result = orders.stream().map(order -> new SimpleOrderDto(order)) .collect(Collectors.toList()); return result; } @Getter public static class SimpleOrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); } }강의 자료와 같은 코드인 것 같은데 쿼리가 한 번씩 더 나가서 질문 드립니다.처음에 order와 member를 join하는 쿼리 하나 실행그 뒤로 member 조회 쿼리, delivery 조회 쿼리 하나씩 실행되는 건 이해가 됩니다.그런데 그 뒤로 order 테이블에서 특정 delivery_id에 해당하는 걸 조회하는 쿼리가 하나씩 또 나갑니다.이 부분이 왜 발생하는지 찾기가 힘들어서 질문을 남깁니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
CQS 패턴 질문
CQS 패턴에 대해 질문이 있습니다.커맨드(상태 변경)와 쿼리(조회)를 분리하는 패턴이라는 건 알겠습니다.커맨드는 상태 변경에 대한 책임이 있고 조회에 대한 결과 반환의 책임이 있지 않다. 따라서 반환값을 반환하지 않는다.쿼리는 조회에 대한 결과 반환의 책임이 있어서 조회 결과를 반환값으로 반환한다.이 정도로 이해했습니다.문제는 api인데, api도 커맨드 api, 쿼리 api 이런식으로 분리 하나요?/api/v2/members/{id} 경로의 updateMemberV2 라우트 핸들러는 상태를 변경하는 api니까 Member의 상태만 변경하고 response는 성공, 실패에 대한 HTTP 상태 응답값만 반환하나요?조회에 대한 api는 조회 결과를 response dto로 내려주는 데에 이상하게 생각하지는 않습니다.그런데 삭제, 등록, 업데이트 등의 커맨드 api..?는 보통 그냥 api 결과로 HTTP status code만 반환해주는 지가 궁금하네요. 지금도 삭제 api는 그냥 204 응답 코드로 반환해주도록 개발해왔었는데 이게 CQS 패턴인지 궁금하네요.지금까지 별 생각없이 업데이트 api도 엔티티에 대한 업데이트를 수행하고 업데이트 된 Entity를 가지고 dto를 만들어서 http response를 내려주었는데CQS 패턴을 생각하면 이런 api는 성공 실패만 반환하는게 맞는건가 싶어서요
-
미해결김영한의 실전 자바 - 중급 1편
풀이 방법을 못 찾아서 indexOf를 사용하지 안고 풀었는데 이 풀이가 맞는지 봐주실수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.TestString6를 풀다가 찾다찾다 못찾아서 제 식대로 풀어버렸는데 논리적으로 하자가 없는 지가 궁금해서 풀이식을 올려봅니다.물론 인덱스메소드를 쓰지 않았지만 이렇게 풀면 문제되는 부분이 있을까요? 아직도 배열에서 헤메고 있는 초보라 배열을 제대로 썼는지도 궁금합니다.
-
해결됨김영한의 실전 자바 - 중급 2편
제약 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용]private static void run(TaskScheduler scheduler) { while (scheduler.getRemainingTasksSize() > 0) { scheduler.processNextTask(); } }여기에서 while (scheduler.getRemainingTasksSize() > 0)로 이미 task의 여부를 판단할 수 있는 조건 처리가 있는데 public void processNextTask() { Task processTask = tasks.poll(); if (processTask != null) { processTask.execute(); } }내부 실행 메서드에서도 한번 더 task가 있는지 null 체크를 했습니다. 제가 풀었을 때는 이미 제약이 걸렸다고 생각하여null 체크까지는 해주지 않고 풀어서 질문 남깁니다. 이미 이전에 비슷한 제약이 걸려있는데,내부 메서드에서도 한번 더 제약을 거는 이유가 궁금합니다.아니면 다른 예외가 발생할 수 있는 케이스가 있는건가요?
-
해결됨실습으로 배우는 선착순 이벤트 시스템
쿠폰 테이블 조회 시 user_id 값
db에 등록도 잘 되었는지 확인해 보기 위해서coupon 테이블 조회 해보았는데 [coupon_id], [user_id]테스트 로직에서 userId 값은 단순히 for을 통해 0부터 순차적으로 받은 뒤쿠폰 개수에 맞춰 userId 도 0~99 사이의 값이 들어 올 것이라 생각했는데예상과 다르게 103 이라는 id가 들어왔습니다이런 이유가 궁금합니다
-
미해결김영한의 실전 자바 - 기본편
인스턴스 메서드와 클래스 메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클래스 메서드와 인스턴스 메서드 모두 메서드 영역에 존재한다고 하셨는데, 클래스 메서드는 인스턴스 생성 없이도 사용 가능하지만 인스턴스 메서드는 인스턴스 생성 없이는 사용이 불가능한 걸로 이해했습니다. 그럼 Java 내부적으로 같은 메서드 영역에 속한 클래스 메서드와 인스턴스 메서드를 어떻게 구분하여 클래스 메서드는 사용 가능하도록, 인스턴스 메서드는 사용 불가능하도록 처리하는 것인가요?
-
미해결김영한의 실전 자바 - 중급 1편
내부클래스는 중첩클래스에 속하는것 아닌가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용][섹션 7-4 내부클래스] 에서 마지막 정리 부분에서 설명해 주신 "중첩이라는 단어와 내부라는 단어의 의미의 차이" 에서 중첩 을 어떤 다른 것이 내부에 위치하거나 포함되는 구조적 관계, 나의 안에 있지만 내것이 아닌 것을 말한다.중첩(Nested)은 나의 안에 있지만 내것이 아닌것을 말한다. 단순히 위치만 안에 있는 것이다. 반면에 여기서 의미하는 내부(Inner)는 나의 내부에서 나를 구성하는 요소를 말한다.라고 말씀하셨는데 이부분이 좀 햇갈려서요! 앞서 [섹션 7-1 중첩 클래스, 내부 클래스란?] 강의 파트 에서 가장 처음 설명해 주셨을 때 중첩클래스는 4가지 종류가 있으며 그 안에는 내부 클래스도 포함되어있다 라고 말씀하셨는데해당 파트의 강의 중간에 중첩과 내부라는 단어에 차이가 있다고 하셔서요.그렇다면 사실 "내것이 아닌것" 이라는 의미는 단순한 중첩인 순수 nested가 아니라 정적 중첩 즉, static nested에 해당하는것 아닌가요!?제가 잘못 이해하고 있다면... 처음에 중첩 안에 4가지 종류중 내부 클래스는 제외되어야 하는거 아닌가? 생각이 들었습니다. 중첩 클래스는 클래스를 정의하는 위치에 따라 여러가지 분류가 있다. 총 4가지가 있으며, 크게 2가지로 분류된다. - 중첩 클래스 분류 1. Static 정적 중첩 클래스 2. Non-Static 내부 클래스 1. inner 내부 클래스 2. local 지역 클래스 3. annonymous 익명 클래스 중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다.이렇게 교안으로도 함께 설명해주셨던 정의가 틀린것이 아닌가 해서요..죄송하지만 계속 햇갈려서 정확히 해 둬야 할거 같아요! 명쾌한 답변부탁드립니다 ^^(바쁘시더라도 강의를 직접 찍으신 영한형님께서 직접 답변 부탁드려요.. AI는 가끔제 질문의 요지를 잘 못알아먹고 오해를 불러일으키니..)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 데이터베이스
[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 스프링 3.0 이상으로 프로젝트를 만들어서 h2 데이터베이스도 그에 맞는 최신 버전으로 다운 받아 설치하였는데요.jdbc:h2:~/jpashop로 최초 한번 연결 후 (여기까진 성공) 끊고,jdbc:h2:tcp://localhost/~/jpashop 으로 연결하면이 오류가 뜹니다. h2 데이터베이스는 켜둔 상태입니다. spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver