생성자가 이해가 안가요..
미해결
Do it! 자바 프로그래밍 입문 with 은종쌤
public Student() { korea = new Subject(); math = new Subject(); } 이게 어떤..역할인건지.. 왜 빈 괄호를 붙이는지 이해가 안가요 ㅠ
- java
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
Do it! 자바 프로그래밍 입문 with 은종쌤
public Student() { korea = new Subject(); math = new Subject(); } 이게 어떤..역할인건지.. 왜 빈 괄호를 붙이는지 이해가 안가요 ㅠ
해결됨
스프링과 JPA 기반 웹 애플리케이션 개발
자주 쓰이고, 오타가 날법한 String 을 모아 아래 처럼 상수화 했습니다. 상수패키지 com.studyolle.core.constant.* 이후 Controller , Test 등에서 아래와 같이 사용중입니다. 질문입니다 Enum 으로 관리 하려고 했지만, 컨트롤러-핸들러 의 @GetMapping( Enum.URI.name() ) 과같은 선언도 불가능 하고, 단순 값 참조를 Enum .name() 이라던지, Enum .custom() 과 같이 덕지덕지 메서드가 붙게되어, 심플하게 하고자, Enum 은 사용하지 않았습니다. 그러나 이렇게 static final 필드 로 관리하다보면, 언젠가 양이 많아 질탠데, 이럴 경우는 또다시 나누어야 될거라 생각이 듭니다만.. 이런 일반적인 방식 보다 효과적으로 관리하는 ( Map 을 쓴다던지, 특정 패턴이라던지) 방법이 있을까요? 상수 관리는 이런 방향이 괜찮았다.. 라는 사례가 궁금합니다. 읽어주셔서 감사합니다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. 맨 마지막에 플러시 정리해주실 때 설명이 헷갈려서 질문드립니다. 플러시는 트랜잭션 단위로 동작하기 때문에 '커밋 직전'에만 변경 내역을 DB에 날려주면 된다고 하셨는데요, 앞서 배운 그림 자료는 commit() 호출 -> flush() 호출 -> 쿼리가 날아감 인 것 같은데 커밋 직전에 변경 내역을 날린다는 게 무슨 의미인지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요! 주문 목록 검색 요청을 처리하는 OrderController의 orderList() 메서드 관련 질문이 있습니다. 제가 findOrders()내부 findAllByString() 로직을 이해한게 아니여서, orderList()메소드가 이런식으로 동작하는게 맞는지 궁금합니다. 이 메소드는 다음의 3가지 상황에 의해 호출 될 것 같은데요, 1. 상품 주문 화면에서 상품 주문 후, 주문을 처리하는 order() 메소드에 의한 리다이렉션 요청을 받을 때 2. 홈 화면에서 순수하게 주문 내역을 클릭하였을 때 3. 주문 내역 화면에서, 회원명 or 주문상태를 조건으로 하여 검색할 때 그래서 상황 1,2와 같은 경우에는 모든 주문 내역을 다 보여주고, 상황 3의 경우에는 조건에 따른 주문내역만을 보여주도록 동작해야 할 것 같습니다. 이때 실제 코드에서는 OrderService의 findOrders() 메소드 호출만으로 위 3가지 상황을 모두 커버하고 있는데요, 그렇게 되면 () 상황 1,2의 경우에는 orderList()의 @ModelAttribute orderSearch에 null이 대입되어 모든 주문 내역이 다 조회되는 것 같습니다. 그리고 상황 3의 경우에는 선택한 조건에 따른 orderSearch 객체가 form태그에 의해 요청파라미터로 념겨져와서, orderList()의 파라미터 중 orderSearch가 받아 조건에 따른 주문 내역이 조회되는 것 같은데, 제가 맞게 이해한건지 궁금합니다. 그리고 특히 상황 3의 경우 선택한 회원명or주문상태에 따른 orderSearch객체를, form태그가 생성하여 보내주는 것이 맞는지 궁금합니다. 긴 질문 읽어주셔서 감사합니다!
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 강사님! 이번 강의에서 addStock함수와 removeStock 함수를 entity에 작성하셨는데요. 응집력 측면에서 해당하는 entity에 함수에 관련된 로직들을 넣는 건 이해했습니다. 여기서 궁금한건 테스트 코드인데요 저렇게 entity에 로직이 들어가면 해당 로직도 테스트 코드를 작성해야 할거 같거든요. 일반적으로 서비스에 비지니스 로직을 넣고 여러 함수들이 생기면 테스트클래스를 작성해서(ex. SampleService -> SampleServiceTest) 각 함수들을 테스트하는 테스트 코드를 짜는데요. 단위테스트를 할 때 외부 디펜던시(ex. db 등)를 끊고 해당 기능만 테스트 하는게 좋다고 배웠습니다. 그럼 Service에 있는 함수는 함수대로 테스트하고, 엔티티에 있는 함수들은 그거대로 또 따로 테스트를 작성해야 할 거 같은데 현업에서는 엔티티도 테스트를 작성하는 건가요? 아래처럼요 public class ItemTest { @Test public void removeStockTest() { //given //when itemEntity.removeStockTest() //then } }
미해결
만들면서 배우는 HTML/CSS
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. //style.css width : 100% ; height : 100% ; } .bx-wrapper , .bx-viewport , .slider { width : 100% ; height : 100% ; } .background__01 { width : 100% ; height : 100% ; background : url ( "../images/a.jpg" ) no-repeat ; background-size : cover ; background-position : center ; } .background__02 { width : 100% ; height : 100% ; background : url ( "../images/b.jpg" ) no-repeat ; background-size : cover ; background-position : center ; } .background__03 { width : 100% ; height : 100% ; background : url ( "../images/c.png" ) no-repeat ; background-size : cover ; background-position : center ; } .contents { position : absolute ; top : 0 ; text-align : center ; } .contents__name { font-size : 64px ; font-weight : bold ; color : blanchedalmond ; margin-bottom : 25px ; } .contents__job { font-size : 25px ; font-weight : bold ; color : blanchedalmond ; margin-bottom : 50px ; } .content__list { font-size : 0 ; } .contents__list > li { display : inline-block ; width : 52px ; height : 52px ; border : 1px solid white ; border-radius : 50% ; font-size : 16px ; } .content__list > li > a { color : white ; } //index.html <! DOCTYPE html > < html > < head > < meta charset = "utf-8" > < title > Halfhalfman's Homepage </ title > < link href = "css/reset.css" rel = "stylesheet" type = "text/css" /> < link href = "css/style.css" rel = "stylesheet" type = "text/css" /> < script src = "js/jquery.1.12.4.js" type = "text/javascript" ></ script > < script src = "plugins/bxslider/js/jquery.bxslider.js" type = "text/javascript" ></ script > < script src = "https://kit.fontawesome.com/2871c12638.js" crossorigin = "anonymous" ></ script > < script > $ ( document ). ready ( function (){ $ ( '.slider' ). bxSlider ({ controls : false , pager : false , auto : true }); }); </ script > </ head > < body > < div class = "slider" > < div class = "background__01" ></ div > < div class = "background__02" ></ div > < div class = "background__03" ></ div > </ div > < div class = "contents" > < p class = "contents__name" > Halfhalfman </ p > < P class = "contents__job" > I live at korea, I am a student, I have my own NFT. </ P > < div class = "contents__sns" > < ul class = "contents__list" > < li > < a href = "#" > < i class = "fa-brands fa-discord" ></ i > </ a > </ li > < li > < a href = "#" > < i class = "fa-solid fa-water" ></ i > </ a > </ li > </ ul > </ div > </ div > </ body > </ html >
미해결
만들면서 배우는 HTML/CSS
<! DOCTYPE html > < html > < head > < meta charset = "utf-8" > < title > Halfhalfman's Homepage </ title > < link href = "css/reset.css" rel = "stylesheet" type = "text/css" /> < link href = "css/style.css" rel = "stylesheet" type = "text/css" /> < script src = "js/jquery.1.12.4.js" type = "text/javascript" ></ script > < script src = "plugins/bxslider/js/jquery.bxslider.js" type = "text/javascript" ></ script > < script > $ ( document ). ready ( function (){ $ ( '.slider' ). bxSlider ({ controls: false , pager: false , auto: true }); }); </ script > </ head > < body > < div class = "slider" > < div class = "background__01" ></ div > < div class = "background__02" ></ div > < div class = "background__03" ></ div > </ div > < div class = "contents" > < p class = "contents__name" > Halfhalfman </ p > < P class = "contents__job" > I live at korea, I am a student, I have my own NFT. </ P > < div class = "contents__sns" > < ul > < li > < i > discord </ i > </ li > < li > < i > opensea.io </ i > </ li > </ ul > </ div > </ div > </ body > </ html > 코드입니다.
미해결
스프링 시큐리티
안녕하세요. 학습내용을 복습하던중 질문이 있습니다. <p>DelegatingFilterProxy</p> 와 <p>FilterChainProxy</p> 의 요청 처리 흐름을 <p>DispatcherServlet</p>을 포함하여 설명하는 그림에서 질문이 있습니다. <p>FilterChainProxy</p>가 직접 <p>DispatcherServlet</p>에 요청을 하는 것이 맞나요? 제 생각에는 첨부한 그림과 같은 실행 순서가 되야 할 것 같습니다. <p>FilterChainProxy</p>가 인증 인가 처리를 마친 후 직접 <p>DispatcherServlet</p>에 요청을 날리게 되면 <p>Servlet Container</p>의 필터 Filter 체인 실행에 문제가 있을 것 같습니다.
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요. 강의를 듣던 중 궁금한 점이 생겨 질문을 남깁니다. int j =0 을 for문 조건에 초기화 하지 않고 for문 밖에 초기화를 하면 안쪽 for문이 끝나고 다시 바깥쪽 for문을 돌 때에 마지막 j의 값이 그대로 넘어가게 되는 것 맞나요?
미해결
HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
div 안에 div가 존재하고 자식 div에 position:absolute를 주면 높이값을 잃기 때문에 높이값을 부모요소에 준다고 알고있습니다. 근데 그 높이값이 고정으로 주는게 아니라 안에 자식들이 div가 여러개 있거나 자식 div높이값에 따라서 유동적으로 부모 div값도 고정값이 아닌 자동으로 높이값이 변경되게 하려면 어떻게 해야하나요? 꼭 고정값으로 줘야 하나요? 당연히...자식에 의해서 부모의 높이값을 주면 담길꺼라 생각했는데 실제 담기는게 아니라...부모 사이즈만 늘어나는것 같습니다.
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
어떤 파일이 더 좋다? 유용한가요? 본인에게 더 맞는걸 쓰는게 괜찮은가요? 전 yml이 편한데 구글링 하면서 찾아보면 yml보다 프로퍼티스가 더 많이 보이는거 같아서요..
해결됨
실전! 스프링 데이터 JPA
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원 이메일을 사용하여 MemberRepository에서 회원 정보를 조회하는 메서드를 구현해 보았습니다. 해당 이메일의 회원이 DB에 존재하지 않을경우를 고려하여 다음과 같이 Optional로 감싸주었습니다. Transactional(readOnly = true) public interface MemberRepository extends JpaRepository<Member, Long> { Optional<Member> findByEmail(String email); ... } 이 경우 Service 단에서 해당 메서드를 사용할 경우 변수 타입을 Optional<Member>로 선언해 줘야 했습니다. @Transactional public void followFriend(FollowFriendRequest request) { Member requester = getMember(request.getRequesterEmail()); Optional<Member> receiver = memberRepository.findByEmail(request.getReceiverEmail()); log.info("requester: '{}', receiver: '{}'", requester, receiver); if (receiver == null) { throw new MemberEmailNotFound(); } if (requester.hasFriend(receiver) || relationRepository.existsByOwnerEmailAndFriendEmail(request.getRequesterEmail(), request.getReceiverEmail())) { throw new EmailDuplicatedException(request.getReceiverEmail()); } relationRepository.save(new Relation(requester, receiver)); } 이러면 위 코드 마지막 줄의 Relation 생성자 또한 Optional을 포함한 생성자를 추가로 만들어 줘야 하고 이렇게 되면 Relation 엔티티의 receiver 필드값에도 Optional을 씌워줘야 하는 문제가 발생했습니다. 이 경우 Optional을 어떻게 사용하는게 옳은건지 궁금합니다.
미해결
코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요! 강의 너무나 잘 듣고 있습니다. public class Settings { private Settings() { } private static class SettingsHolder { private static final Settings INSTANCE = new Settings(); } public static Settings getInstance() { return SettingsHolder.INSTANCE; } } 로드 시점에 관한 질문입니다. getInstance가 호출 될때 SettingsHolder가 JVM에 로드된다고 말씀하셨습니다. 자바는 잘 모르지만, 동적으로 로드가 된다고 해석했습니다. public class Settings { private static final Settings INSTANCE = new Settings(); private Settings() { } public static Settings getInstance() { return INSTANCE; } } 그렇다면 이른 초기화 방식도, 마치 SettingsHolder가 그러하듯, 필요로 할 때 동적으로 로드 될 순 없나요? 필요로 할 때 로드된다면 SettingsHolder를 필요로 하지 않을 테니 말이죠. 그럼에도 불구하고 static inner class를 사용하는 건 반드시 이유가 있을 테니.. 하여 제 나름대로 찾아보고 테스트해 본 결과 자바 파일에 정의된 기본 클래스들은 실행 시 로드됨을 확인했습니다. 모든 클래스가 실행 시 로드되는진 확실하진 않지만 이와 관련된 JVM의 로드 정책에 대해서 간략하게 설명 부탁드립니다. :)
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
근데 왜 Hello랑 true가 온거죠..?
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 현재 군인 신분으로 사지방 특성상 차단되어 있는 기능이 좀 있는데 h2.bat이나 윈도우창의 h2 콘솔 모두 켜지지 않는데 이러면 방법이 없는건가요?
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쭉 강의를 따라오다보니 의문점이 하나 있는데 강의에서 em.persist() 이후에 tx.commit() 같은 코드가 없는데 어떻게 DB에 저장이 되는건가요? 김영한님의 다른 jpa강의를 보앗을 때 commit이 필요하다고 본거같아서요!
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요! 일대다 패치조인을 진행하게 될시에, 다쪽의 갯수에 맞추어서 데이터가 뻥튀기, 즉 일쪽이 뻥튀기 된다는 사실을 인지하고 있습니다. 위 코드의 진행과정을 알고싶은데요, 위 처럼 일대다 페치 조인으로 데이터가 뻥튀긴 테이블이 완성되고 -> 뻥튀기 된 데이터들이 애플리케이션(메모리)에 올라가고 -> 거기에서 jpa가 이제 List<Order>에 담는것이 맞을까요? 이게 만약 맞다면, 일대다 패치조인시 페이징할때의 위험성과 같이 저것도 다 메모리에 올라가는 상황이 아닌가요?!, 아니면 제가 메모리의 개념을 잘 이해 못하고 있는지.. 답답하네요 ㅠ
미해결
실전! 스프링 데이터 JPA
@Id @GeneratedValue Member 엔티티의 id생성이 auto로 디폴트값인데, 영상 7분 10초에 멤버의 객체생성이 하나뿐인 테스트에서 id값이 1이아닌 2로 뜨는지 궁금합니다.
해결됨
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 처음으로 mac 환경에서 프로젝트를 열려고 하는데 이 오류 때문에 진행을 못하고 있네요.. 프로젝트 파일을 다시 삭제하고 열어봐도 pc를 재부팅하고 다시 시작해도 똑같은 오류가 계속 발생합니다. 구글링에 검색해봐도 마땅한 해결방안이 나오지 않아 답답하네요ㅜㅜ 프로젝트 구성도 이상합니다.. 파일을 열때마다 "._java"와 같은 텍스트 파일이 생겨요
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private String id ; 위 코드 작성 후 오류가 납니다.. String 말고 숫자로 해도 오류가 나네요 ㅠ .. mysql로 바꿨는데 왜 그런지 모르겠습니다ㅠ 오류 - WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:14) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a create table Member (\000d\000a id varchar(255) not null auto_increment,\000d\000a name varchar(255) not null,\000d\000a primary key (id)\000d\000a ) engine[*]=MyISAM"; expected "identifier"; SQL statement: create table Member ( id varchar(255) not null auto_increment, name varchar(255) not null, primary key (id) ) engine=MyISAM [42001-210] at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.getSyntaxError(DbException.java:265) at org.h2.command.Parser.readIdentifier(Parser.java:5759) at org.h2.command.Parser.parseCreateTable(Parser.java:9306) at org.h2.command.Parser.parseCreate(Parser.java:6779) at org.h2.command.Parser.parsePrepared(Parser.java:746) at org.h2.command.Parser.parse(Parser.java:674) at org.h2.command.Parser.parse(Parser.java:644) at org.h2.command.Parser.prepareCommand(Parser.java:551) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:834) at org.h2.message.DbException.getJdbcSQLException(DbException.java:451) at org.h2.engine.SessionRemote.done(SessionRemote.java:607) at org.h2.command.CommandRemote.prepare(CommandRemote.java:85) at org.h2.command.CommandRemote.<init>(CommandRemote.java:51) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:477) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1292) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 오류 member package hellojpa ; import javax.persistence.* ; import java.math.BigDecimal ; import java.time.LocalDate ; import java.time.LocalDateTime ; import java.util.Date ; @Entity public class Member { @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private String id ; @Column (name = "name" , nullable = false ) private String username ; public Member (){ } public String getId () { return id ; } public void setId (String id) { this . id = id ; } public String getUsername () { return username ; } public void setUsername (String username) { this . username = username ; } } jpaMain package hellojpa ; import org.hibernate.internal.build. AllowSysOut ; import javax.persistence.EntityManager ; import javax.persistence.EntityManagerFactory ; import javax.persistence.EntityTransaction ; import javax.persistence.Persistence ; import java.util.List ; public class JpaMain { public static void main (String[] args) { EntityManagerFactory emf = Persistence. createEntityManagerFactory ( "hello" ) ; EntityManager em = emf.createEntityManager() ; EntityTransaction tx = em.getTransaction() ; tx.begin() ; try { Member member = new Member() ; //member.setId("ID_A"); member.setUsername( "C" ) ; em.persist(member) ; tx.commit() ; } catch (Exception e){ tx.rollback() ; } finally { em.close() ; } emf.close() ; } } persistence.xml <? xml version ="1.0" encoding ="UTF-8" ?> <persistence version ="2.2" xmlns ="http://xmlns.jcp.org/xml/ns/persistence" xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi :schemaLocation ="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd" > <persistence-unit name ="hello" > <properties> <!-- 필수 속성 --> <property name ="javax.persistence.jdbc.driver" value ="org.h2.Driver" /> <property name ="javax.persistence.jdbc.user" value ="sa" /> <property name ="javax.persistence.jdbc.password" value ="" /> <property name ="javax.persistence.jdbc.url" value ="jdbc:h2:tcp://localhost/~/test" /> <property name ="hibernate.dialect" value ="org.hibernate.dialect.MySQL5Dialect" /> <!-- 옵션 --> <property name ="hibernate.show_sql" value ="true" /> <property name ="hibernate.format_sql" value ="true" /> <property name ="hibernate.use_sql_comments" value ="true" /> <property name ="hibernate.hbm2ddl.auto" value ="create" /> </properties> </persistence-unit> </persistence>