자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이가 무료 버전인 사람은 꼭 cli로 해야하나요? 이렇게 이상하게 나와요.. 선생님께서는 유료 버전으로 사용하셔서 저렇게 나오지만 cli버전으로 하니까 테이블 생성문 만들 때 타이핑 쳐도 결과값이 제대로 안 나와서 (예전에 학교 수업시간에 jsp랑 db연동할 때는 mysql 워크밴치 이용해서 했었어서) 워크밴치로 하는 중이에요 결론 : cli대신 workbench로 해도 강의와 원활하게 진행할 수 있는거죠?
안녕하세요. 상품 주문의 값들을 다 체크하고 제출시 해당에러가 발생합니다. list의 경로를 확인해봐도 정상 이었고, order관련 클래스에 문제가있나 확인해 보았지만 문제가 없지만 에러가 발생하여 이렇게 질문합니다. findAllByString findAllByString 혹시 몰라 https://drive.google.com/file/d/1sLGd3uAEdfip5VI7JUKJuIGn2IbpA_BK/view?usp=sharing 구글드라이브 업로드하여 올립니다. [THYMELEAF][http-nio-8080-exec-6] Exception processing template "order/orderList": An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]")] with root cause
안녕하세요. 강의를 듣다가 궁금한 점이 생겨 질문드립니다! 저는 클라이언트로 데이터를 반환할 때 Entity를 그대로 반환하면 안 되고 DTO로 변환 후 반환해야 한다고 해서 @Service 단에서 MapStruct을 이용하여 항상 DTO로 데이터가 반환되게끔 구현했습니다. 이번에 querydsl로 데이터를 DTO를 이용하여 조회하게 되면서 QStoreDto 클래스의 Member 참조형과 QStore 클래스의 Member 참조형 이 일치하지 않아 에러가 발생하고 있습니다. 제가 궁금한 것은 아래 두 개 중에 어떤 방식으로 구현을 하는 것 이 맞는지(?) 효율적인지 궁금합니다. Entity를 절대 외부로 반환하지 말고 .select(Qstore) 로 조회하고 service 계층에서 dto로 매핑 후 리턴 DTO 내부에 Entity 클래스를 사용 후 그대로 외부로 반환 (Response DTO 클래스 내부 Entity는 외부로 노출되어도 괜찮은가요) 감사합니다. ==== 코드도 같이 첨부드립니다! ==== Store Dto @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class StoreDto { private Long id; private String name; private MemberDto member; // Entity를 반환하지 않기 위해 DTO 클래스로 반환 @Builder(toBuilder = true) @QueryProjection public StoreDto(Long id, String name, MemberDto member) { this.id = id; this.name = name; this.member = member; } } Store Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Store { private Long id; private String name; private Member member; @Builder(toBuilder = true) public Store(Long id, String name, Member member) { this.id = id; this.name = name; this.member = member; } } // QStoreDto.member = MemberDto // QStore.member = Member jpaQueryFactory .select(new QStoreDto(store.id, store.name, store.member)) .from(store).fetch();
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/13rE7hYZaGExtkaosBGaEAIU4XVu3R9yU/view?usp=drive_link package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); //불러올 code em.close(); em.close(); } } 이 부분 코드에서 package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); 이렇게 코드 수정했더니 아래같은 에러가 뜹니다ㅠㅠ java: error: release version 5 not supported Module jpa-basic SDK 11 does not support source version 1.5. Possible solutions: - Downgrade Project SDK in settings to 1.5 or compatible. Open project settings. - Upgrade language version in Maven build file to 11. Update pom.xml and reload the project. 이 부분 재질문했는데 답 없어서 새로 질문합니다.
안녕하세요,, 김영한님 강의를 열혈 수강하고 있는 김주영이라고합니다.. 다름아니라, 제가 개인 프로젝트 중 아래 쿼리문을 작성을 했는데 DB조회 개수가 7개 일때, 아래의 쿼리를 실행시키면 select User문에서 쿼리가 7번 나가더라구요,, 도통 이유를 모르겠어서 질문 드립니다.. @Query("select distinct new ..패키지명...user.UserScrapUserQueryDto(us, coalesce(scrap.status, false), us.selectedFirstAt) " + "from User us " + "left join fetch Work work on work.user.id = us.id " + "left join fetch UserScrap scrap on scrap.targetId = us.id and scrap.user.id = :userId " + "where us.userStatus = 'PERMITTED' and " + " us.id not in (select block.targetId from Block block where block.user.id = :userId and block.status = true) " + "and us.id != :userId and us.role = 'USER' " + "order by us.selectedFirstAt desc") 내 userid에 해당하는 user는 제외, block한 유저는 제외, UserScarp과 Work는 fetch join으로 갖고오는 쿼리인데, 혹시 왜 select절이 DB 반환 개수만큼 나오는지 알려주실 수 있을까요? ㅠㅠ 아래처럼 쿼리가 한번 나간 후에 Hibernate: select distinct user0_.user_id as col_0_0_, coalesce(userscrap2_.status, false) as col_1_0_, user0_.selected_first_at as col_2_0_ from "user" user0_ left outer join "work" work1_ on ( work1_.user_id=user0_.user_id ) left outer join "user_scrap" userscrap2_ on ( userscrap2_.target_id=user0_.user_id and userscrap2_.user_id=? ) where user0_.user_status='PERMITTED' and ( user0_.user_id not in ( select block3_.target_id from "block" block3_ where block3_.user_id=? and block3_.status=true ) ) and user0_.user_id<>? and user0_.role='USER' order by user0_.selected_first_at desc select 쿼리로 db에서 갖고온 개수만큼 반환합니다.. Hibernate: select user0_.user_id as user_id1_7_0_, user0_.created_at as created_2_7_0_, user0_.modified_at as modified3_7_0_, user0_.behance as behance4_7_0_, user0_.detail as detail5_7_0_, user0_.device_token as device_t6_7_0_, user0_.email as email7_7_0_, user0_.first_work_id as first_wo8_7_0_, user0_.info as info9_7_0_, user0_.instagram as instagr10_7_0_, user0_.magazine_view_count as magazin11_7_0_, user0_.notion as notion12_7_0_, user0_.role as role13_7_0_, user0_.scrap_count as scrap_c14_7_0_, user0_.selected_first_at as selecte15_7_0_, user0_.tag as tag16_7_0_, user0_.user_name as user_na17_7_0_, user0_.user_status as user_st18_7_0_, user0_.view_count as view_co19_7_0_, user0_.work_thumb_nail as work_th20_7_0_ from "user" user0_ where user0_.user_id=? 답변 주시면 정말 감사하겠습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 중 정리가 잘 되지 않아서 확인차 질문을 남깁니다. 설명에 MEMBER 테이블에 id, name이 TEAM 테이블에 id, name, members가 존재하는데 이건 객체 관점에서는 존재하지만 DB관점에서 FK가 MEMBER 테이블에 존재할 수 밖에 없어 다른 형태로 즉, MEMBER 테이블에 TEAM_ID 속성이 생성되는걸로 확인이 됩니다. 여기서 FK가 MEMBER 테이블에 존재할 수 밖에 없는 이유는 TEAM테이블에 FK 존재 시 FK가 다수의 값을 가지게 되어서 존재가 불가능한 것인지, 맞다면 그렇기 때문에 @JoinColumn(name = "TEAM_ID") 어노테이션을 사용하면 JPA에서 자동적으로 MEMBER테이블에 TEAM_ID 컬럼을 생성하는 건지 확인하고자 질문을 남깁니다.
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 섹션 1. 프로젝트 환경설정 H2 데이터 베이스설치 관련 질문사항 제가 원래 H2는 제대로 동작 됐고 다음 JPA와 DB 설정을 진행하다 오류가 생겨 고민하다 아예 전부 지우고 다시 시행하는 과정에서 이번에는 H2데이터 베이스를 설치하면서 해결이 되지 않아서 질문합니다. (아마 제 생각에는 여러 번 깔았다가 지웠다하면서 뭔가 오류가 생긴 것 같습니다.) 1.cmd 창에 입력하면 창이 새롭게 뜨지 않습니다. 2.cmd (관리자 권한)이어도 마찬가지로 h2창이 뜨지 않습니다. 3.h2 console 을 누르면 아무런 반응이 없습니다. 어떻게 해야할까요? 아니면 흔적이 남지 않게 완전히 지우는 방법이라도 알려주세요... 버전을 다르게 깔아봤는데도 마찬가지입니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] https://www.inflearn.com/questions/72824 질문을 읽어보았습니다. 서버사이드 렌더링과 클라이언트 사이드 렌더링이 있고, 강의 예제에서 썼던 thymeleaf 같은 방법은 서버사이드 렌더링이라고 이해했습니다. 그리고 실무에서는 서버사이드와 클라이언트 사이드를 둘 다 사용한다고 하셨는데, 둘 다 사용한다는 말의 의미가 1. 동일한 화면에 대해 서버사이드와 클라이언트 사이드가 공존한다는 건가요? 만약 맞다면, 2. 실제 사용자가 보는 화면은 둘 중 어떤 걸로 선택되나요? 그리고 3. 서버사이드 렌더링을 사용하는 이유와 용도가 궁금합니다. 저 혼자서 데이터를 대강 화면에 뿌려보면서 백엔드 개발이 잘 되었는지를 확인하는 용도로 쓰는건가? 라는 생각을 했어서... 정확히 실무에서 어떤 용도로 쓰는건지 궁금합니다. 질문이 너무 많아서 죄송합니다ㅠㅠ 상세한 답변이 어려우시다면 참고할만한 레퍼런스나 검색 키워드를 추천해주셔도 좋습니다.
1월 22, 2024 11:47:46 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [name: hello] 1월 22, 2024 11:47:46 오후 org.hibernate.Version logVersion INFO: HHH000412: Hibernate ORM core version 6.4.2.Final 1월 22, 2024 11:47:46 오후 org.hibernate.cache.internal.RegionFactoryInitiator initiateService INFO: HHH000026: Second-level cache disabled 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using built-in connection pool (not intended for production use) 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: Loaded JDBC driver class: org.h2.Driver 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001012: Connecting with JDBC URL [jdbc:h2:tcp:// localhost/~/test ] 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {password=****, user=sa} 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH10001115: Connection pool size: 20 (min=1) 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl constructDialect WARN: HHH90000025: H2Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) 1월 22, 2024 11:47:47 오후 org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService INFO: HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp:// localhost/~/test ] 코드는 프로젝트 초기 설정 소스 코드 그대로 실행했는데 안됩니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 2:48분쯤에 버그가 일어났을 때 실무에서는 데이터베이스의 데이터를 복구할 때 다시 버그가 일어난 시점으로 데이터베이스를 다시 되돌릴 수 있나요? 롤백기능같은걸 실무에서 쓰는지 강의를 듣다가 궁금해서 질문해봅니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 해당 영상에서는 member를 두번 persist 하고 나면 DB에 JPA 어플리케이션을 다시 실행 시키더라도 해당 member 데이터가 2개 남아있는데, 저는 실행시킬 때 마다 해당 데이터들이 모두 사라지네요 package hellojpa; import jakarta.persistence.*; 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(1L); member.setName("HelloA"); em.persist(member); */ Member findMember = em.find(Member.class, 1L); System. out .println("findMember.getId() = " + findMember.getId()); System. out .println("findMember.getName() = " + findMember.getName()); findMember.setName("HelloJPA"); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); } emf.close(); } } 주석 처리한 부분을 먼저 실행 시키고, 이후에 저 부분을 주석처리하고 findMember를 하면 해당 멤버를 가져와야 하는데 그게 안되고 매번 DB가 초기화가 됩니다. 왜 그럴까요?
해당 예제를 통해 주키퍼를 먼저 실행을 해볼려하지만 계속해서 해당 classpath를 찾지 못하고 있습니다. 비슷한 상황을 겪은 사람들의 경우 바이너리 파일이 아닌 소스 파일을 다운 받아 해당 문제를 겪었다고 했지만 저의 경우 알맞은 파일을 설치하여 압축을 해제하였는데 어떤게 원인일까요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 이 과정에서 jdbc:h2:~/jpashop까지 입력을 완료하고 데이터베이스가 잘 생성이 되었는데 ~ /jpashop.m v.db이 어디에 생성된건지 모르겠습니다. ~ /jpashop.m v.db