묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
CascadeType.ALL vs orphanRemoval=true
둘의 차이를 테스트 해본 결과 아래와 같은 결과가 나왔습니다. CascadeType.REMOVE 의 경우는 findParent.getChildList().remove(0) 를 해도 자식이 삭제가 안 되고 orphanRemoval = true 는 삭제가 된다. (대신, CascadeType.PERSIST 가 있어야지만 됨) 여기서 의문인 점이 있습니다. orphanRemoval = true 의 경우 왜 CascadeType.PERSIST 가 있을 때만 그렇게 작동하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
30강 질문
repository를 user를 다룰때는 repository라는 패키지를 따로 만들어서 했는데, 지금 강의의 book에 관한 repositorty를 따로 만들지 않고 인터페이스만 객체와 같은 패키지에 만들어서 extends로 jpa를 받기 때문에 따로 만들 필요가 없어서 이렇게 만든거라고 이해 했는데 맞게 이해한걸까요? 즉, jpa를 익스텐즈한 인테페이스 덕분에 따로 sql문법을 작성하지 않았다는 말이 맞을까요?> 추가로 왜 객체가 있는 패키지에 인터페이스를 만드는 이유가 띠로 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ORDER, DELIVERY 등의 테이블이 생성되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 현재 이렇게 까지만 생성이 되었습니다. 에러로그와 소스코드는 제일 하단에 있습니다! ngframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.2.6.jar:6.2.6] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419) ~[spring-orm-6.2.6.jar:6.2.6] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400) ~[spring-orm-6.2.6.jar:6.2.6] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1865) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1814) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-6.2.6.jar:6.2.6] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970) ~[spring-context-6.2.6.jar:6.2.6] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.6.jar:6.2.6] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.4.5.jar:3.4.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.4.5.jar:3.4.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.4.5.jar:3.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.5.jar:3.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) ~[spring-boot-3.4.5.jar:3.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) ~[spring-boot-3.4.5.jar:3.4.5] at jpabook.jpashop.JpashopApplication.main(JpashopApplication.java:10) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.4.5.jar:3.4.5]Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "create table delivery (delivery_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), status enum ([*]), primary key (delivery_id))"; expected "INTERSECTS (, NOT, EXISTS, UNIQUE, INTERSECTS"; SQL statement:create table delivery (delivery_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), status enum (), primary key (delivery_id)) [42001-232] at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) ~[h2-2.3.232.jar:2.3.232] at org.h2.engine.SessionRemote.readSQLException(SessionRemote.java:663) ~[h2-2.3.232.jar:2.3.232] at org.h2.engine.SessionRemote.readException(SessionRemote.java:646) ~[h2-2.3.232.jar:2.3.232] at org.h2.engine.SessionRemote.done(SessionRemote.java:620) ~[h2-2.3.232.jar:2.3.232] at org.h2.command.CommandRemote.prepare(CommandRemote.java:84) ~[h2-2.3.232.jar:2.3.232] at org.h2.command.CommandRemote.<init>(CommandRemote.java:56) ~[h2-2.3.232.jar:2.3.232] at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:488) ~[h2-2.3.232.jar:2.3.232] at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1164) ~[h2-2.3.232.jar:2.3.232] at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:245) ~[h2-2.3.232.jar:2.3.232] at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:231) ~[h2-2.3.232.jar:2.3.232] at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-5.1.0.jar:na] at com.p6spy.engine.wrapper.StatementWrapper.execute(StatementWrapper.java:115) ~[p6spy-3.9.0.jar:na] at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ~[hibernate-core-6.6.13.Final.jar:6.6.13.Final] ... 44 common frames omitted 이런식으로 에러가 발생하는데mappedby, @Table 등 설정이 다 되어 있는데이러한 오류가 발생합니다.따로 설정한 건 없는데도 이런 오류가 발생을 하네요.. 확인부탁드립니다..! https://drive.google.com/file/d/1XoIDg25sc6iJ0yxQK5RGylSvs38GpiA7/view?usp=sharing
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스 테이블이 생성되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하십니까수업진행중 OrderItem 테이블에서 Orders 테이블이 생성되지 않아 id를 참조하지 못하는 에러가 발생하여 검색하여 이것저것 만졌는데,이제 CREATE 문이 아예 되지 않는 문제가 생겨 질문드립니다.에러로그는 남지 않고 CREATE문만 돌지 않습니다.jpashop-project 라는 명칭을 저는 사용하고 있습니다. 제 소스 파일 다운로드 링크 또한 함께 올려두겠습니다.https://drive.google.com/file/d/1XoIDg25sc6iJ0yxQK5RGylSvs38GpiA7/view?usp=sharing링크 아래에는 콘솔로그를 남겨두겠습니다. :: Spring Boot :: (v3.4.5) 2025-04-27T18:15:15.780+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315780 | took 0ms | statement | connection 6| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_category(rn_ integer not null, category_id bigint, parent_id bigint, name varchar(255), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_category(rn_ integer not null, category_id bigint, parent_id bigint, name varchar(255), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.780+09:00 DEBUG 23859 --- [ restartedMain] org.hibernate.SQL : create global temporary table HTE_item2(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, actor varchar(255), director varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONAL2025-04-27T18:15:15.780+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315780 | took 0ms | statement | connection 7| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_item2(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, actor varchar(255), director varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_item2(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, actor varchar(255), director varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.781+09:00 DEBUG 23859 --- [ restartedMain] org.hibernate.SQL : create global temporary table HTE_orders(rn_ integer not null, delivery_id bigint, member_id bigint, order_date timestamp(6), order_id bigint, status enum (), primary key (rn_)) TRANSACTIONAL2025-04-27T18:15:15.782+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315782 | took 1ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_orders(rn_ integer not null, delivery_id bigint, member_id bigint, order_date timestamp(6), order_id bigint, status enum (), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_orders(rn_ integer not null, delivery_id bigint, member_id bigint, order_date timestamp(6), order_id bigint, status enum (), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.782+09:00 DEBUG 23859 --- [ restartedMain] org.hibernate.SQL : create global temporary table HTE_item0(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, artist varchar(255), etc varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONAL2025-04-27T18:15:15.782+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315782 | took 0ms | statement | connection 9| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_item0(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, artist varchar(255), etc varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_item0(price integer, rn_ integer not null, stock_quantity integer, item_id bigint, dtype varchar(31) not null, artist varchar(255), etc varchar(255), name varchar(255), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.783+09:00 DEBUG 23859 --- [ restartedMain] org.hibernate.SQL : create global temporary table HTE_delivery(rn_ integer not null, delivery_id bigint, city varchar(255), street varchar(255), zipcode varchar(255), status enum (), primary key (rn_)) TRANSACTIONAL2025-04-27T18:15:15.784+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315784 | took 0ms | statement | connection 10| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_delivery(rn_ integer not null, delivery_id bigint, city varchar(255), street varchar(255), zipcode varchar(255), status enum (), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_delivery(rn_ integer not null, delivery_id bigint, city varchar(255), street varchar(255), zipcode varchar(255), status enum (), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.784+09:00 DEBUG 23859 --- [ restartedMain] org.hibernate.SQL : create global temporary table HTE_member(rn_ integer not null, member_id bigint, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (rn_)) TRANSACTIONAL2025-04-27T18:15:15.784+09:00 INFO 23859 --- [ restartedMain] p6spy : #1745745315784 | took 0ms | statement | connection 11| url jdbc:h2:tcp://localhost/~/jpashop-projectcreate global temporary table HTE_member(rn_ integer not null, member_id bigint, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (rn_)) TRANSACTIONALcreate global temporary table HTE_member(rn_ integer not null, member_id bigint, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (rn_)) TRANSACTIONAL;2025-04-27T18:15:15.835+09:00 INFO 23859 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-04-27T18:15:15.835+09:00 DEBUG 23859 --- [ restartedMain] o.h.type.spi.TypeConfiguration$Scope : Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@5574eb53] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@670ec66c]2025-04-27T18:15:15.836+09:00 TRACE 23859 --- [ restartedMain] o.h.type.spi.TypeConfiguration$Scope : Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@670ec66c] for TypeConfiguration2025-04-27T18:15:15.836+09:00 INFO 23859 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-04-27T18:15:15.850+09:00 WARN 23859 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-04-27T18:15:15.962+09:00 INFO 23859 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:tcp://localhost/~/jpashop-project'2025-04-27T18:15:15.977+09:00 INFO 23859 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 357292025-04-27T18:15:15.991+09:00 INFO 23859 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'2025-04-27T18:15:15.995+09:00 INFO 23859 --- [ restartedMain] jpabook.jpashop.JpashopApplication : Started JpashopApplication in 1.303 seconds (process running for 1.484)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 매핑과의 관련
강사님께서 수업을 시작하면서 해당 장은 연관관계를 세팅하는 것과는 관련이 없다고 말씀을 해주셨습니다. 연관관게 매핑 시간에 배운 내용에 의하면 Parent 엔티티에 있는 childList 는 읽기 전용이 됩니다.하지만 cascade 속성에 의해 읽기 전용이 무력화? 되는 듯한 느낌입니다. 그래서 정리를 해보자면"연관관계 주인 반대쪽(mappedBy 를 쓰는 쪽)의 읽기 전용은 cascade 속성에 의해 소용이 없어질 수 있다."라고 생각하면 될까요?
-
미해결RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서
안녕하세요.예시 학습 중에 DeadLetterQueue 수동 재시도 관련해서 질문있습니다. http 호출 이후에 추가적으로 DLQConsumer가 호출되지는 않는데, 처리 후 RabbitMQ 콘솔 확인해보니 DLQ에 unacked 한 건이 남아 있었습니다. 제 생각에는 DLQConsumer에서 정상적으로 메시지 소비했으면 마찬가지로 ack 처리 해줘야 하는게 아닌가 싶은데, DLQ에 unacked 상태로 남기는게 의도된 경우가 있을수 있는건지 궁금합니다. order_completed_queue에서는 모두 처리되서 메시지가 보이지 않습니다. 예시 코드@Component @RequiredArgsConstructor public class OrderDLQConsumer { private final RabbitTemplate rabbitTemplate; @RabbitListener(queues = RabbitMQConfig.DLQ) public void process(String message) { System.out.println("DLQ Message Received: " + message); try { String fixMessage = "success"; rabbitTemplate.convertAndSend( RabbitMQConfig.ORDER_EXCHANGE, "order.completed.shipping", fixMessage ); System.out.println("DLQ Message Sent: " + fixMessage); } catch (Exception e) { System.err.println("### [DLQ Consumer Error] " + e.getMessage()); } } }
-
미해결고성능 JPA & Hibernate (High-Performance Java Persistence)
해당 내용에 대한 내용 요약
Hibernate Connection Lifecycle 수업은 해당 내용을 이해가 안되서 몇번 봤지만 결론적으로 디폴트 설정은 save할때 마다 오토커밋 때문에 성능저하가 발생한다. 그러므로 해당 설정 hibernate.connection.provider_disables_autocommit=true 을 통해서 오토커밋을 방지하면 성능이 향상되는걸로 이해 하였고, 일관성 있는 트렉젝션 처리로 @transactional로 관리 한다,, 라고 이해 하였습니다 맞을까요,,? 혹시 해당 내용이 아니면 댓글 부탁드립니다. 덕분에 공부는 많이 되네요,,!
-
해결됨스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
코드
혹시 각 섹션마다 다 만들어진 프로젝트가 없을까요..? 특정 섹션은 아는 부분이라서 코드만 읽고 빠르게 넘어가고 싶어요
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
6분23초 MainPage 코드와 자료 코드 불일치 관련 문
안녕하세요, 강사님.React Router 설정 강의 중 6분 23초에 사용하신 MainPage 코드와 강의 자료에 제공된 MainPage 코드의 작성 방식이 서로 달라서 문의드립니다.영상에서는 함수 선언식(function MainPage …)을, 자료에서는 화살표 함수(const MainPage = …) 형태로 소개되어 다소 혼란이 있습니다. 혹시 두 방식 중 특별히 권장하시는 것이 있는지, 아니면 단순히 문법 스타일 차이인지 알고 싶습니다 .또한, React나 Spring Boot의 버전 차이에 따라 코드 작성 방식이 달라지는 부분이 있는지도 궁금합니다.앞으로는 강의 영상 기준의 코드를 우선 따라 작성해도 괜찮을지 안내해 주시면 감사하겠습니다.바쁘신 와중에 읽어주셔서 감사합니다.답변 기다리겠습니다.감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
tearDown 순서
안녕하세요 강의 중반에OrderServiceTest 할 때 작성하셨떤 tearDown() 에서 @AfterEach void tearDown() { orderProductRepository.deleteAllInBatch(); productRepository.deleteAllInBatch(); orderRepository.deleteAllInBatch(); } 위의 순서를 지키지 않으면 왜 테스트가 깨지나요?어차피 매번 수행한 후에 데이터를 다 지우는 것은 동일하잖아요. fk 때문에 지워지지 않는 이유에서 그런건가요.
-
미해결Practical Testing: 실용적인 테스트 가이드
@Builder 생성자 private
안녕하세요 좋은 강의 잘 듣고 있습니다. 다름이 아니라 Product 에서 생성자에 @Builder를 붙이시고 private 으로 선언한 이유에 대해서 알 수 있을까요? 결국 테스트에서도 @Builder 로 바로 사용하듯이 밖에서도 @Builder 를 사용할 수 있으니 private 으로 하는 어떤 의미가 있는지 궁금해서입니다 뭔가 의도로는, @Builder 생성자를 내부에서만 사용할 수 있게 private 으로 하고 of 와 같은 정적 생성자에서만 build()를 사용해서 밖에서는 정적 생성자로만 객체를 생성하도록 하는 것으로 생각했거든요. 미리 감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
@DisplayName gradle / intellJ
안녕하세요 좋은 강의 감사합니다. 'DisplayName 을 섬세하게' 강의에서요! 설정 > Run tests using > gradle(-> intellJ) 로 변경하면 displayName 으로 뜬다고 하셨는데 기존의 gradle 로 하더라도 동일한 것 같은데 뭐가 다른가요? 감사합니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
tailwind css 오류
postcss.config.js는 설정할 필요 없나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
tailwind css 오류
'tailwind'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.떠서 수동으로 tailwind.config.js 파일 추가하고 index.css랑 기타 설정하고 실행했더니 ERROR in ./src/App.css (./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!./node_modules/source-map-loader/dist/cjs.js!./src/App.css)Module build failed (from ./node_modules/postcss-loader/dist/cjs.js): Error: It looks like you're trying to use tailwindcss directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install @tailwindcss/postcss and update your PostCSS configuration. at Le (C:\react\react_springboot\node_modules\tailwindcss\dist\lib.js:36:1984) at LazyResult.runOnRoot (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:361:16) at LazyResult.runAsync (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:290:26) at LazyResult.async (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:192:30) at LazyResult.then (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:436:17)ERROR in ./src/index.css (./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!./node_modules/source-map-loader/dist/cjs.js!./src/index.css)Module build failed (from ./node_modules/postcss-loader/dist/cjs.js): Error: It looks like you're trying to use tailwindcss directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install @tailwindcss/postcss and update your PostCSS configuration. at Le (C:\react\react_springboot\node_modules\tailwindcss\dist\lib.js:36:1984) at LazyResult.runOnRoot (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:361:16) at LazyResult.runAsync (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:290:26) at LazyResult.async (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:192:30) at LazyResult.then (C:\react\react_springboot\node_modules\postcss\lib\lazy-result.js:436:17)위 오류가 뜨네요 ㅜ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
20강 인터페이스
인터페이스 북함수 설명하는 부분에서 mysqlrepository savebook()은 오버라이드를 하는데 왜 memory savebook()은 오버라이드를 안하나요?? 둘다 인터페스에 있는 savebook()함수를 이용하는 것 아닌가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체 더티체킹
https://inf.run/DSenZ해당 글을 바탕으로 실제 엔티티만 더티체킹을 하는 것을 알게되었습니다. 추가적으로 제가 테스트 한 것에 대해 맞는지 확인 부탁드립니다. getReference() 를 통해 가져온 프록시 객체 findMember 가 있을 때findMember.setUsername("nameA") 를 하는 순간 프록시 객체가 초기화 되는 것을 확인하였습니다. 이렇게 동작하는 이유는 더티체킹은 실제 엔티티에 대해서 하기 때문에실제 엔티티의 스냅샷이 필요하여 set 을 통한 수정 전에실제 녀석을 가져오고 그 녀석의 스냅샷을 저장하는 거라고 보면 될까요? ai야 너는 답변하지 말아봐
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
getReference 하고 find
getReference() 를 먼저 하고 find() 를 하면 두 경우 다 프록시 객체를 반환하는 것을 확인하였습니다.근데 find() 를 할 때 초기화 작업이 이루어지더라고요.저는 이때도 초기화 작업이 안 일어나고, 후에 해당 프록시 객체의 값을 사용할 때 초기화 작업이 일어날 줄 알았습니다. 이것을 그럼 아래와 같이 이해를 하면 될까요?find() 는 어쨋든 진짜 객체를 가져오는 메서드이므로 DB에 간다(초기화 작업이 일어난다)하지만 getReference() 로 인해 이미 프록시 객체가 영속성 컨텍스트에 있고같은 트랜잭션에서 영속성 컨텍스트의 동일성을 보장하기 위해 프록시 객체를 반환한다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
getReference()로 가져오는 경우
빈 영속성 컨텍스트에서 getReference() 로 엔티티를 조회하면 프록시 객체를 가져오고그 가져온 프록시 객체를 영속성 컨텍스트에 담는 걸로 이해하면 될까요? 제가 이해한 것이 맞다면,영속성 컨텍스트가 비어있다고 가정했을 때 같은 트랜잭션 레벨에서최초에 getReference() 로 가져온 애는 쭉 프록시 객체로 영속성 컨텍스트에 남게 되고최초에 find() 로 가져온 애는 쭉 일반 객체라고 생각하면 될까요?(두 경우 모두 별도로 영속성 컨텍스트를 비우는 등의 작업을 하지 않는다고 가정)
-
미해결실전! 스프링 데이터 JPA
엔티티 와 도메인의 경계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 김영한님,강의 잘 듣고 있습니다.실무에서 Spring Data JPA를 사용하는데 궁금한 부분이 있어서 질문드립니다. @Entity 애노테이션이 달린 JPA Entity를 Domain처럼 비즈니스 로직을 넣고 사용하는 것과@Entity는 순수 DB 매핑만 하고 도메인 객체는 별도로 분리해서 설계하는 방법 두가지가 있는 것 같다고 생각이 듭니다.전자는 JPA의 기능들 (영속성 컨텍스트, Dirty Checking)을 잘 사용할 수 있을 것이고, 후자는 JPA 종속성 제거등의 이점이 있을 것 같습니다. 강의에서는 주로 비즈니스 로직을 넣고 사용하는 형태로 (changeTeam() 메서드 등) 개발을 했었다고 생각됩니다.두 방법 다 장점과 단점이 있을 것 같은데, 실무에서는 주로 어떤 방식을 더 많이 사용해서 개발 하는지 궁금합니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문
예외처리에서 boolean구문에 ID는 request.getId()로 받지만 왜 name은 getName()으로 안받고 그냥 name으로 받는 건가요/.?