묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
실전예제 4 - 상속관계 매핑 11:05
안녕하세요.실전예제 4 - 상속관계 매핑 11:05 부분에서 'json으로 말아넣는다'는 의미가 어떻게 넣는다는 의미인가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
컨트롤러가 맵핑이 안 됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]java version: 17mavenspring.io에서 다운 받고 실행 했는데 컨트롤러가 인식이 안 됩니다.패키지 계층구조도 맞췄는데, /demo/controller로 들어가도 인식이 안 됩니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
서비스 운영 중에 @MappedSuperclass 확장 가능 여부
안녕하세요.@MappedSuperclass 어노테이션을 사용하는 BaseEntity 클래스는 아래와 같은 필드를 갖고 있습니다.CREATEDBY CREATEDDATE LASTMODIFIEDBY LASTMODIFIEDDATE여기서 궁금한 점이 하나 생겼는데요.만약 처음에 100개의 클래스 중 100개 클래스 모두가 BaseEntity 클래스를 상속받아서 공통 필드를 사용하고 있습니다.그런데 운영중에 100개 중 50개의 클래스에서만 사용하는 공통 필드가 추가되면 이런 경우에는 어떻게 처리하면 좋을까요?자바에서 상속은 1개만 할 수 있어서 고민이 됩니다.50개의 클래스에 노가다로 필드를 입력해야 좋을지,,
-
미해결실전! 스프링 데이터 JPA
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]갑자기 궁금한 부분이 생겼는데, 배달의 민족은 웹이 아니라 앱으로 동작하잖아요. 그럼 api 개발을 위주로 하시는 거라고 생각이 되는데 스프링 웹이던 아니면 앱을 이용하는 개발이던 개발하는 부분에 관해서는 큰 차이가 없는 건가요? 스프링으로 개발만 할 줄 알면 필요한 곳에 그대로 쓰기만 하면 되는 건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
lombok 적용 오류
[질문 내용]안녕하세요. 강의 초반에 롬복 설치하고 테스트하는 과정에서 오류가 발생해 문의 드립니다. 강의에서 설명해주신대로 롬복 활성화 후, annotation enable 설정도 다 해봤는데도 setter,getter가 적용이 되지 않습니다.혹시 해결 방법이 있을까요?구글링해서 캐시도 삭제해보고 인텔리제이 재설치도 해봤는데도 안돼서 문의드립니다. 혹시 몰라서 사진 첨부합니다.감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]패치 조인을 한다는 것은 "영속성 컨텍스트를 사용한다." 라고 이해해도 되나요?
-
미해결실전! Querydsl
스프링 부트 3.0 + Querydsl 설정 관련
안녕하세요! 강의 잘 듣고 있습니다 감사합니다.강의를 따라가다가 잘 안되는 부분이 있어서 질문글 하나 남겨봅니다.Gradle -> Tasks -> build -> cleanGradle -> Tasks -> other -> compileQuerydsl실행 시에 정상적으로 Q타입 클래스가 생성이 됩니다.그런데 이후에 테스트 코드를 돌려보면이런 오류가 뜹니다.이것저것 해보다가 build파일이 없는 상태에서(삭제 후에) 테스트를 돌리면 돌아가긴 합니다.정상적으로 빌드해서 돌려보고 싶은데 설정을 어떻게 바꿔야 할까요?https://drive.google.com/file/d/1H7Sz9Z994odDceIhuTp9S4bpfvhDjxAr/view?usp=sharing구글 드라이브 링크입니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
controller에서 service단을 안 거치고 바로 repository로 향하는 이유가 있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요, 강의를 듣다가 의문점이 생겨서 질문 남깁니다.JPA 1 수업을 들을 때는 controller에서 service를 거쳐 repository로 이동하는 걸 배웠고제가 실무에서도 controller에서 작업하지 말고 db와 커넥션은 꼭 service단에서 하라고 알려주셨습니다이번 예제에서 controller에서 바로 repository로 간 이유가 있는지 궁금합니다단순 예제 코드를 줄이기 위함인지, 이유가 있는 건지행여나 제가 수업에서 언급하셨는데 놓친건지.. 답변 부탁드립니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입을 불변 객체로 만드는 것과 변경 감지랑은 관련 없는 걸까요?
안녕하세요, 값 타입을 불변 객체를 만들 때 궁금한 점이 생겨 질문드립니다. 상황을 가정해서 질문드리겠습니다.상황값 타입을 불변 객체로 만들어서 값을 수정하기 위해, 새로운 불변 객체를 만들어 엔티티의 필드값을 변경합니다.질문위 상황에서 "JPA 관점에서는 어쨌든 컬럼값이 변경되어야 하니까 변경 감지는 계속 일어나고 있다." 처럼 이해해도 괜찮을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컬렉션 컬럼으로 검색
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.Order 검색 시에 OrderItems의 컬럼을 where절로 검색하고 싶으면 어떻게 해야 하나요??일단 Order를 조회하고 OrderItems를 default_batch_fetch_size 지연로딩으로 조회한 다음에 loop돌려서 직접 찾아야 하는지아니면 querydsl을 배우면 방법이 있나요?감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
orphanRemoval = true 로 했을 때, delete 쿼리가 나가지 않는 문제
문제 상황안녕하세요, orphanRemoval = true 로 했을 때, delete 쿼리가 나가지 않는 오류가 있어 질문드리게 되었습니다. 실습에 사용한 코드는 아래와 같습니다. (import 문은 제거하였습니다.)@Entity public class Parent { @Id @GeneratedValue @Column(name = "PARENT_ID") private Long id; private String name; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List<Child> childList = new ArrayList<>(); public void addChild(Child child) { this.childList.add(child); child.setParent(this); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Child> getChildList() { return childList; } } @Entity public class Child { @Id @GeneratedValue private Long id; private String name; @ManyToOne @JoinColumn(name = "PARENT_ID") private Parent parent; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Parent getParent() { return parent; } public void setParent(Parent parent) { this.parent = parent; } } 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 { Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.persist(child1); em.persist(child2); em.flush(); em.clear(); Parent findParent = em.find(Parent.class, parent.getId()); findParent.getChildList().remove(0); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); } emf.close(); } }위의 JpaMain.main() 을 실행했을 때, 아래와 같은 로그가 나옵니다. (DDL 옵션은 create 입니다.)/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=57639:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/charsets.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/cldrdata.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/dnsns.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/jaccess.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/jfxrt.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/localedata.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/nashorn.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/sunec.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/ext/zipfs.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/jce.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/jfr.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/jfxswt.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/jsse.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/management-agent.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/resources.jar:/Users/preferkim/Library/Java/JavaVirtualMachines/corretto-1.8.0_362/Contents/Home/jre/lib/rt.jar:/Users/preferkim/IdeaProjects/inflearn-spring/hello-jpa/target/classes:/Users/preferkim/.m2/repository/org/hibernate/hibernate-entitymanager/5.3.10.Final/hibernate-entitymanager-5.3.10.Final.jar:/Users/preferkim/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar:/Users/preferkim/.m2/repository/org/hibernate/hibernate-core/5.3.10.Final/hibernate-core-5.3.10.Final.jar:/Users/preferkim/.m2/repository/org/javassist/javassist/3.23.2-GA/javassist-3.23.2-GA.jar:/Users/preferkim/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/preferkim/.m2/repository/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final.jar:/Users/preferkim/.m2/repository/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar:/Users/preferkim/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar:/Users/preferkim/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar:/Users/preferkim/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final.jar:/Users/preferkim/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar:/Users/preferkim/.m2/repository/net/bytebuddy/byte-buddy/1.9.5/byte-buddy-1.9.5.jar:/Users/preferkim/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar:/Users/preferkim/.m2/repository/com/h2database/h2/1.4.199/h2-1.4.199.jar hellojpa.JpaMain Feb 10, 2023 12:19:21 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...] Feb 10, 2023 12:19:21 PM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.3.10.Final} Feb 10, 2023 12:19:21 PM org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found Feb 10, 2023 12:19:21 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations {5.0.4.Final} Feb 10, 2023 12:19:21 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) Feb 10, 2023 12:19:21 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp://localhost/~/test] Feb 10, 2023 12:19:21 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {user=sa} Feb 10, 2023 12:19:21 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false Feb 10, 2023 12:19:21 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) Feb 10, 2023 12:19:21 PM org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect Feb 10, 2023 12:19:22 PM org.hibernate.cfg.AnnotationBinder processJoinedDiscriminatorProperties WARN: HHH000457: Joined inheritance hierarchy [hellojpa.domain.item.Item] defined explicit @DiscriminatorColumn. Legacy Hibernate behavior was to ignore the @DiscriminatorColumn. However, as part of issue HHH-6911 we now apply the explicit @DiscriminatorColumn. If you would prefer the legacy behavior, enable the `hibernate.discriminator.ignore_explicit_for_joined` setting (hibernate.discriminator.ignore_explicit_for_joined=true) Hibernate: drop table Album if exists Hibernate: drop table Book if exists Hibernate: drop table Child if exists Hibernate: drop table Item if exists Hibernate: drop table Locker if exists Hibernate: drop table Member if exists Hibernate: drop table Movie if exists Hibernate: drop table Parent if exists Hibernate: drop table Team if exists Hibernate: drop sequence if exists hibernate_sequence Hibernate: create sequence hibernate_sequence start with 1 increment by 1 Hibernate: create table Album ( artist varchar(255), ITEM_ID bigint not null, primary key (ITEM_ID) ) Hibernate: create table Book ( author varchar(255), isbn varchar(255), ITEM_ID bigint not null, primary key (ITEM_ID) ) Hibernate: create table Child ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) ) Hibernate: create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, primary key (ITEM_ID) ) Hibernate: create table Locker ( LOCKER_ID bigint not null, name varchar(255), primary key (LOCKER_ID) ) Hibernate: create table Member ( MEMBER_ID bigint not null, createdBy varchar(255), createdDate timestamp, lastModifiedBy varchar(255), lastModifiedDate timestamp, USERNAME varchar(255), LOCKER_ID bigint, TEAM_ID bigint, primary key (MEMBER_ID) ) Hibernate: create table Movie ( actor varchar(255), director varchar(255), ITEM_ID bigint not null, primary key (ITEM_ID) ) Hibernate: create table Parent ( PARENT_ID bigint not null, name varchar(255), primary key (PARENT_ID) ) Hibernate: create table Team ( TEAM_ID bigint not null, createdBy varchar(255), createdDate timestamp, lastModifiedBy varchar(255), lastModifiedDate timestamp, name varchar(255), primary key (TEAM_ID) ) Hibernate: alter table Member add constraint UK_336xr48t7ci4jeiq7lt6xm2f4 unique (LOCKER_ID) Hibernate: alter table Album add constraint FK75mrpprv8oigh00y92tibw7id foreign key (ITEM_ID) references Item Hibernate: alter table Book add constraint FK2srbe8wjbanr4vtkrsb8atq7o foreign key (ITEM_ID) references Item Hibernate: alter table Child add constraint FKqtrfkxtu92rllepi09f1mwvls foreign key (PARENT_ID) references Parent Hibernate: alter table Member add constraint FK332130jlg9s5hyeuk7gfgi052 foreign key (LOCKER_ID) references Locker Feb 10, 2023 12:19:22 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@55caeb35] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Feb 10, 2023 12:19:22 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@3af37506] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate: alter table Member add constraint FKl7wsny760hjy6x19kqnduasbm foreign key (TEAM_ID) references Team Hibernate: alter table Movie add constraint FKqqwswm36y8uqoh9emtoruoxcv foreign key (ITEM_ID) references Item Feb 10, 2023 12:19:22 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@36a7abe1' Hibernate: call next value for hibernate_sequence Hibernate: call next value for hibernate_sequence Hibernate: call next value for hibernate_sequence Hibernate: /* insert hellojpa.domain.cascade.Parent */ insert into Parent (name, PARENT_ID) values (?, ?) Hibernate: /* insert hellojpa.domain.cascade.Child */ insert into Child (name, PARENT_ID, id) values (?, ?, ?) Hibernate: /* insert hellojpa.domain.cascade.Child */ insert into Child (name, PARENT_ID, id) values (?, ?, ?) Hibernate: select parent0_.PARENT_ID as PARENT_I1_7_0_, parent0_.name as name2_7_0_ from Parent parent0_ where parent0_.PARENT_ID=? Hibernate: select childlist0_.PARENT_ID as PARENT_I3_2_0_, childlist0_.id as id1_2_0_, childlist0_.id as id1_2_1_, childlist0_.name as name2_2_1_, childlist0_.PARENT_ID as PARENT_I3_2_1_ from Child childlist0_ where childlist0_.PARENT_ID=? Feb 10, 2023 12:19:22 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test] Process finished with exit code 0 질문Q. 저는 Parent 에 orphanRemoval=true 로 설정되어있고, JpaMain.main() 에서 '부모 엔티티의 컬렉션에서 자식 엔티티의 참조를 제거' 하고 있으므로 당연히 DELETE 문이 나가야 하지 않나라고 생각했지만, 실제로는 DELETE 문이 나가지 않더라고요. 혹시 제가 잘못이해하고 있는 걸까요?Q. Parent 에 cascade = CascadeType.ALL 옵션을 추가하고 나면 DELETE 문이 정상적으로 나가는 것을 확인할 수 있었습니다. orphanRemoval=true 를 설정해주기만 DELETE 문이 나가야할 것 같은데, cascade = CascadeType.ALL 까지 추가해야 DELETE 문이 나가는 이유가 무엇인지 궁금합니다.영한님과 서포터님들께 항상 감사드립니다.🙇♂️
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
open feign yml 세팅 관련
spring.cloud openFeign ver 4.0.* 이상 쓰시는분들은yml 세팅시 공식문서에 변경된 설정양식에 맞춰서 적용 하여야 합니다.https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
[spring data JPA] save()에 대해 궁금한 점이 있습니다.
public void updateUser(UserUpdateRequest request) { User user = userRepository.findById(request.getId()) .orElseThrow(IllegalArgumentException::new); user.updateName(request.getName()); userRepository.save(user); }안녕하세요.강의를 듣다가 save() 메서드에 대해 궁금한 점이 있어서 작성하게 되었습니다.updateUser() 메서드에서 파라미터 id 값을 통해 해당되는 객체를 불러온 뒤,updateName() 메서드를 통해 이름을 변경한 다음, save() 메서드를 통해 저장한다고 이해했습니다. 여기서 save() 메서드를 통해 DB에 저장할 때 변경하기 이전에 저장했던 데이터의 id값이 겹치지 않고 실행이 되는건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
실행창 정렬 바꾸려고 하는데 어떻게 하나요?
이 실행창을이렇게 바꿔주고 싶습니다.구글에 검색했지만제가 키워드를 잘 못 적고 검색을 해서 그런지Ctrl + alt + l 만 나오더라구요..물어볼데가 없어서 여기에 물어봅니다..
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
지연 로딩 프록시 객체
안녕하세요^^먼저 20만 수강생 축하드립니다. 영한님 JPA 복습 중에 질문드립니다. 지연로딩 설정시 프록시 객체를 조회하게 되는데애플리케이션에서 실제 엔티티의 데이터가 필요하면 그때 프록시가 실제 엔티티를 호출하여 쿼리가 발생하는 것으로 이해하고 있습니다.제가 이해한게 맞을까요? 그리고 한번 지연 로딩으로 설정되었기 때문에실제 엔티티를 사용하고 다시 한번 해당 클래스를 호출 해도 프록시 객체가 호출되는것이 맞는건가요?System.out.println("실제로 Team 엔티티를 사용하면?"); findMember.getTeam().getName(); System.out.println("후 findMember.getTeam()="+ findMember.getTeam().getClass()); 감사합니다.^^
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
어노테이션에 대해서
안녕하세요 강의 잘 듣고 있습니다!!강의를 듣다가 궁금해서 질문 남깁니다.Controller와 Service 연결할때와 Service와 Repository를 연결할때 사용하는 @Autowired는 사용하지 않아도 자동으로 연결이 되는건가요??Service클래스와 Repository클래스 위에 @Service, @Repository 어노테이션을 사용할떄도 있고 이번 강의처럼 사용하지 않을떄도 있는데 아직까지 차이점을 모르겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문 남깁니다!
안녕하세요 선생님!15강의 jdbcTemplate.query(readSql, (rs, rowNum) -> 0, request.getID()).isEmpty();위 문장에 대해서 질문이 있습니다!(rs, rowNum) -> 0 에서 rowNum이 무엇을 뜻하는 건지 알 수 있을까요?
-
미해결실전! 스프링 데이터 JPA
h2 데이터베이스 생성 오류 질문
localhost로 바꾸고 jdbc:h2:~/datajpa로 작성하고 해도 저렇게 뜨네요권한도 755로 변경했습니다어떻게 해야 할까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
주문 내역 조회 관련하여 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.다른건 다 잘 동작하는데 주문 내역 조회를 하면Whitelabel Error PageThis application has no configured error view, so you are seeing this as a fallback.Thu Feb 09 17:10:38 KST 2023[80f6a090-2] There was an unexpected error (type=Internal Server Error, status=500).An error happened during template parsing (template: "class path resource [templates/order/orderList.html]")org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Error has been observed at the following site(s): checkpoint ⇢ Handler jpaBook.jpaShop.controller.OrderController#orderList(OrderSearch, Model) [DispatcherHandler] checkpoint ⇢ HTTP GET "/orders" [ExceptionHandlingWebHandler] Original Stack Trace: at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createFullStream$0(SpringWebFluxTemplateEngine.java:198) at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:236) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:211) at reactor.core.publisher.MonoWhen$WhenInner.onComplete(MonoWhen.java:427) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1840) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.member.name" (template: "order/orderList" - line 45, col 21) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) at org.attoparser.MarkupParser.parse(MarkupParser.java:257) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createFullStream$0(SpringWebFluxTemplateEngine.java:198) at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:236) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:211) at reactor.core.publisher.MonoWhen$WhenInner.onComplete(MonoWhen.java:427) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1840) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.member.name" (template: "order/orderList" - line 45, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:144) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) at org.thymeleaf.engine.Model.process(Model.java:282) at org.thymeleaf.engine.Model.process(Model.java:290) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel(IteratedGatheringModelProcessable.java:368) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process(IteratedGatheringModelProcessable.java:222) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd(TemplateHandlerAdapterMarkupHandler.java:388) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:322) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd(OutputExpressionInlinePreProcessorHandler.java:220) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:164) at org.attoparser.HtmlElement.handleCloseElementEnd(HtmlElement.java:169) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd(HtmlMarkupHandler.java:412) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd(MarkupEventProcessorHandler.java:473) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement(ParsingElementMarkupUtil.java:201) at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:725) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ... 32 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1021E: A problem occurred whilst attempting to access the property 'name': 'Unable to access property 'name' through getter method' at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:209) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104) at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:405) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:92) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:112) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:338) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ... 57 more Caused by: org.springframework.expression.AccessException: Unable to access property 'name' through getter method at org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.read(ReflectivePropertyAccessor.java:685) at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:204) ... 63 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.read(ReflectivePropertyAccessor.java:681) ... 64 more Caused by: org.hibernate.LazyInitializationException: could not initialize proxy [jpaBook.jpaShop.domain.Member#1] - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:164) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309) at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:44) at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:102) at jpaBook.jpaShop.domain.Member$HibernateProxy$qF4ptgCa.getName(Unknown Source) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ... 66 more이러한 오류가 뜹니다.orderList.html 에서 item.member.name에 접근하려다가 오류가 나는 것 같은데 잘 모르겠어서 질문드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이 에러 Syntax error in SQL statement 도와주세요.
안녕하세요. 최태현 강사님. 설명도 친절하게 잘 해주셔서 재밌게 따라가고 있는데 실습하려고 실행시켜보니까 이런 에러가 뜹니다. 어떻게 해결해야하는지 잘 모르겠어요ㅠㅠㅠ도와주세요.