월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
fetch join 과 일반 join 에서 궁금한점 있습니다..
post와 user 가 다 대 일 관계이고, lazy로딩을 걸어놓은 상태에서, post와 연관된 user의 정보를 가져오고싶을때, 일반 join jpql : select u.nickName, u.age ... from Post p join p.user u; fetch join jpql : select p from Post join fetch p.user; 둘 다 n+1 문제를 예방할 수 있는 건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티와 값타입의 차이 중 의문점..
임베디드 타입 같은 값 타입은 여러 엔티티에서 공유를 하게 되면 위험하다고 하였습니다. 그런데 말씀해주신거와 같이 만약에 의도를 하여 공유하고자 했을 경우에는 임베디드 타입의 객체를 엔티티 객체로 변경해서 사용해야 한다고 하셨는데 왜 그런지 궁금합니다..
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
단방향 연관관계 설정만 했을 때 연관관계 메소드 처리
영한님이 강의자료에서 "순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자" 라고 하셨는데요 그런데 단방향으로도 JPA는 돌아가기 때문에 일단 초기 단계에서는 단방향으로, 그리고 구현 단계에서 필요할때 양방향으로 변경하라고 하셨습니다. 그렇다면 굳이 양방향으로 설정 안해도 되어서 단방향으로 끝내는 상황이면, 한쪽 객체에는 참조가 없어 연관관계 메소드를 사용할 수 없는데 이러면 "순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자" 와 대치된다고 생각합니다. 어떤 방법을 선택해야 하는지 잘 모르겠어서 질문 드립니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
.
.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
GenerationType.SEQUENCE 전략
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 그 GenerationType.SEQUENCE 전략 일때 allocationSize를 지정하면 DB에 key값(id)을 얻기위해 디비에 매번 쿼리를 날리는게 아닌 일정 개수마다 쿼리를 날리기에 최적화가 된다고 하셨고, 그 원리는 메모리를 이용하기 떄문이다라고 하셨습니다. (질문1) 여기서 만약에 어플리케이션이 이중화가 되어있으면, 메모리를 이용한 key값(id) 설정이 조금 이상해질것 같기도한데, 이 부분에 대해서 이상이 없나요? (질문2) 이상이 없다면, 어떻게 처리하는지 알 수 있을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
현업에서 User의 키값을 고객에게 넘길때...
안녕하세요, 영한님, 서포터즈 님들! 요새 API 스펙에 대해 고민을 많이 하고 있는데요! 예를들어 email을 ID로 로그인하는 User 도메인(엔티티)이 있다고 가정할게요! 실제 db상의 key는 다른 값을 가지고 있습니다! (auto_increment) 유저 목록을 반환할때 유저의 식별자로 db의 키값을, 아니면 email 을 반환하는게 좋을까요?? db의 키값 (auto_increment)를 클라이언트가 알아도 괜찮은건가 싶어서 문의드려요! (이경우 db의 key 내부구현이 드러나는게 아닌가 합니다... )
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Hello JPA 프로젝트 생성 관련 오류 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 강사님 수업에서 라이브러리 추가 -pom.xml을 그대로 복사 붙여넣기했는데 오류가 뜹니다 (version은 제가 다운받은 최신버전으로 바꿈) 어떻게 해야하나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쿼리 안에 있는 인젝터 랭귀지를 설치 하려하는데 어떻게 해야 하나요
-학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 인터넷에 해당 방법을 찾아봐도 방법이 나와 있지를 않아서 여쭈어 봅니다. 윈도우 10 기준입니다...
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
find 메서드 관련 질문입니다
find 메서드 실행 시에 parameter로 넘기는 부분이 이런 식으로 조금 다르게 자동완성 기능이 뜨는 부분 해결 방법이 있을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 매핑에 대해서 궁금한점이 있어서 질문드립니다.
안녕하세요. 연관관계 매핑에 있어서 일대다, 다대일, 다대다 관계를 정하는 기준이 따로 있는지가 궁금합니다. 예를 들어서, 제 생각에는 회원 - 주문이 관계에서 볼때 회원은 한번의 주문을 하므로 1:1 관계 주문 - 상품의 관계에서 볼때 여러 상품이 한번 주문되므로 1:n관계라고 생각됩니다. 그러면 member, order, orderItem, item 에서 member - order = 1:1 order - orderItem = 1:n orderItem - item = n:1 의 관계가 되는 것이라고 생각됩니다. 근데 현재가지의 수업 내용으로 볼 때에 member - order = 1:n order - orderItem = 1:n orderItem - item = n:1 으로 보고있는거 같은데 맞을까요??
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
플러시 발생 조건 관련
안녕하세요? 플러시 발생에 대해 3가지를 소개해주셨는데요. em.flush 직접 호출 트랜잭션 commit 시점 (자동실행) JPQL 과 같은 객체지향 쿼리 호출 시 이중 3번 관련하여 문의사항이 있습니다. JPQL과 Criteria Query, QueryDSL, Native SQL 등 여러가지 객체 지향 쿼리를 소개해주셨는데요. 이 네가지 모두에 대해 3번이 적용되는지 궁금합니다. 제가 테스트를 해봤을때는 JPQL Select 의 경우 자동 실행되는 것으로 확인했는데, QueryDSL 은 자동실행되지 않는 것 같습니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
영속 엔티티의 동일성 보장
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1차 캐시에 있는 값을 그대로 가지고 왔기 때문에 영속 엔티티의 동일성을 보장한다고 하셨는데, 만약에 1차 캐시에 있는 값이 특정 이유에서 사라지고 다시 가져온 경우에도 동일성을 보장을 하는지 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
생성자 에러 발생합니다.
안녕하세요. 잘 작동하고 있는데, 클래스명부분에 빨간줄과 함께 에러 문구가 뜨더라구요. 혹시 무시해도 되는 에러인지 궁금해서 질문드립니다. 아래에 소스코드, 발생에러, 테이블 생성 여부 올렸습니다. - 에러코드: Class 'Order' should have [public, protected] no-arg constructor - Order 코드: @Entity@Table(name="ORDERS")public class Order { @Getter @Setter @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ORDER_ID") private Long id; @Getter @Setter @Column(name="MEMBER_ID") private Long memberId; @Getter @Setter @Transient private int discountPrice; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) @Getter @Setter private OrderStatus status; public Order(Long memberId, Integer discountPrice) { this.memberId = memberId; this.discountPrice = discountPrice; } @Override public String toString() { return "Order{" + "memberId=" + memberId + ", discountPrice=" + discountPrice + '}'; }}- Orders Table log
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
DB에 저장되어 있는 Entity를 조회하지 않고 새로 생성해서 값을 넣고 사용해도 되나요?
안녕하십니까! JPA를 친구와 학습하다가 서로 의문인 점을 얘기하다가 잘 몰라서 질문드립니다! 예시를 들자면 "member1"이라는 회원을 새로 등록해야합니다. 이 때 DB에 저장되어 있는 "teamA" 소속입니다. 그리고 팀에서 pk를 제외한 값들은 바뀔일이 크게 없습니다. 저는 DB의 정합성과 무결성을 지켜야하므로 "teamA"를 조회해서 "member1"을 등록해야한다! 였습니다. 친구는 "그러면 'teamA'를 조회하는 쿼리가 1번 날라가는데 차라리 'teamA'에 소속되어 있는것을 알고 있고 이 팀의 값은 바뀌지 않으니까 이걸 새로 생성해서 'member1'을 등록하면 되지 않냐?" 였습니다. 나 : DB에서 팀을 조회해서 회원을 등록해야한다. 친구 : 쿼리1번 줄이기 위해 팀을 새로 생성하고 회원을 등록한다. 이에 다음 코드로 실험을 진행하였습니다. 결과는 insert가 잘 되었고 'member1'도 'teamA'에 소속되어서 DB에 잘 저장 되었습니다. 이 때 저는 "만약에 등록하기 직전에 'teamA'의 값이 DB에서 바뀌었으면 에러가 나지 않겠냐" 였습니다. 하지만 이번 강의에서도 봤듯이 외래키인 'teamA'를 사용하여 회원을 등록할 때 entity 전체값이 아닌 그 중 pk값으로만 인식하기에 DB에서 팀 이름을 바꾸고 저장하여도 잘 저장되었습니다. 그래서 저는 의문이 들었습니다. 단순하게 저장만 할 때는 'teamA'를 조회하는 쿼리를 줄여서 등록해도 될까요? 만약에 회원 등록이 페이지 조회하듯이 많이 일어나는 이벤트라면 이 때 1번의 쿼리가 성능 차이를 꽤 보일텐데 이 때 사용해도 될까요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. flush 관련 질문드립니다
안녕하세요 만약 영속성 컨텍스트의 쓰기 지연 SQL 저장소에 insert 문이 5개가 있는 상태에서 flush 한다면 5번의 insert sql과 1번의 커밋으로 총 6번을 데이터베이스와 통신하는 건가요? 아니면 5개 전부 한꺼번에 날리고 + 1번의 커밋으로 총 2번을 데이터베이스와 통신하는 건가요? (아니면 JDBC 의 SQL 배치 기능을 이용해야만 총 6번의 통신을 2번의 통신으로 줄일 수 있는 건가요?) 감사합니다
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade.REMOVE 와 @~toMany
테스트 코드로 아래와 같이 member 와 member 관계로 many to many 로 걸어놓은 상태로 member 리스트를 지우는 작업을 시도했는데, ERROR --- [SimpleAsyncTaskExecutor-44] o.h.e.jdbc.spi.SqlExceptionHelper : ERROR: update or delete on table "member" violates foreign key constraint "fk_member" on table "member_follower" Detail: Key (id)=(1) is still referenced from table "member_followers". member를 참조하고 있는 데이터가 member_follwer테이블에 있어 삭제할 수 없다는 오류가 떴습니다. cascade.REMOVE는 엔티티가 지워질 때 관련된 엔티티들도 모두 지우는 작업으로 알고 있는데 혹시 ToMany의 경우에는 동작이 안되는 경우도 있는 걸까요? @Entity@Table(name = "member")public class Member extends AuditEntity { @ManyToMany(cascade = CascadeType.REMOVE) @JoinTable(name = "member_follower", joinColumns = { @JoinColumn(name = "member_id")}, inverseJoinColumns = {@JoinColumn(name = "follwer_id")}) private List<Member> follwers;
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
hibernate:drop table member if exists 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이렇게 오류가 발생합니다! "C:\Program Files\Java\jdk-11.0.14\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.3\lib\idea_rt.jar=59490:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\하늬하루\OneDrive - SangMyung University\바탕 화면\이 찬\스프링\JPA\ex1hellojpa\target\classes;C:\Users\하늬하루\.m2\repository\org\hibernate\hibernate-entitymanager\5.3.10.Final\hibernate-entitymanager-5.3.10.Final.jar;C:\Users\하늬하루\.m2\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\Users\하늬하루\.m2\repository\org\hibernate\hibernate-core\5.3.10.Final\hibernate-core-5.3.10.Final.jar;C:\Users\하늬하루\.m2\repository\org\javassist\javassist\3.23.2-GA\javassist-3.23.2-GA.jar;C:\Users\하늬하루\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\하늬하루\.m2\repository\org\jboss\jandex\2.0.5.Final\jandex-2.0.5.Final.jar;C:\Users\하늬하루\.m2\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;C:\Users\하늬하루\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\하늬하루\.m2\repository\org\dom4j\dom4j\2.1.1\dom4j-2.1.1.jar;C:\Users\하늬하루\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.0.4.Final\hibernate-commons-annotations-5.0.4.Final.jar;C:\Users\하늬하루\.m2\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;C:\Users\하늬하루\.m2\repository\net\bytebuddy\byte-buddy\1.9.5\byte-buddy-1.9.5.jar;C:\Users\하늬하루\.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;C:\Users\하늬하루\.m2\repository\com\h2database\h2\2.1.212\h2-2.1.212.jar;C:\Users\하늬하루\.m2\repository\javax\xml\bind\jaxb-api\2.3.0\jaxb-api-2.3.0.jar" hellojpa.JpaMain7월 14, 2022 12:51:28 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformationINFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...]7월 14, 2022 12:51:28 오후 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.3.10.Final}7월 14, 2022 12:51:28 오후 org.hibernate.cfg.Environment <clinit>INFO: HHH000206: hibernate.properties not found7월 14, 2022 12:51:28 오후 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>INFO: HCANN000001: Hibernate Commons Annotations {5.0.4.Final}7월 14, 2022 12:51:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureWARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)7월 14, 2022 12:51:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp://localhost/~/test]7월 14, 2022 12:51:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001001: Connection properties: {user=sa}7월 14, 2022 12:51:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001003: Autocommit mode: false7월 14, 2022 12:51:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>INFO: HHH000115: Hibernate connection pool size: 20 (min=1)7월 14, 2022 12:51:29 오후 org.hibernate.dialect.Dialect <init>INFO: HHH000400: Using dialect: org.hibernate.dialect.H2DialectHibernate: drop table Member if existsHibernate: create table Member ( id bigint not null, name varchar(255), primary key (id) )7월 14, 2022 12:51:29 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@523d6bdb] 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.7월 14, 2022 12:51:29 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@74294c1a] 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.7월 14, 2022 12:51:29 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSourcesINFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@7479b626'7월 14, 2022 12:51:30 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stopINFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]7월 14, 2022 12:51:30 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections closeERROR: Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:h2:tcp://localhost/~/test
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
gradle 로 수업을 따라했을 때 문제가 발생해 질문남깁니다.
안녕하세요. gradle로 실습을 진행하다가 Entity 경로를 찾지 못하는 문제가 발생해서 질문 드립니다. 주제는 다음과 같습니다. persist 로 영속성 컨텍스트에 저장하려고 하는데 에러를 따라가보니 Entity 경로를 못찾는 에러가 발생했습니다. 그래서 persistence.xml 에 <class> 태그로 경로를 설정해줌으로써 에러는 해결되었습니다. 그런데 질문사항은 다음과 같습니다. 이렇게 해결하는 방식이 맞는 해결 방식일까요? gradle로 진행시 application.properties로 설정하는 방식을 사용하는게 나을까요?? <?xml version="1.0" encoding="UTF-8" ?><persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1"> <persistence-unit name="5xik"> <class>xik.ShoppingMall.Domain.Member</class> <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/~/jpashop"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <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.id.new_generator_mappings" value="true"/--> </properties> </persistence-unit></persistence>package xik.ShoppingMall;import lombok.Getter;import lombok.Setter;import org.junit.jupiter.api.Test;import xik.ShoppingMall.Domain.Member;import javax.persistence.*;public class JpaTest{ @Test void JpaTest() { // 엔티티 팩토리 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("5xik"); // 엔티티 매니저 생성 EntityManager em = emf.createEntityManager(); // 트랜잭션 객체 생성 EntityTransaction tx = em.getTransaction(); tx.begin(); Member membertest = new Member(); //membertest.setId(1L); membertest.setName("parksung"); membertest.setPhoneNumber("01074724537"); em.persist(membertest); try{ Member findMember = em.find(Member.class, 1L); System.out.println("findMember,Id = " + findMember.getId()); System.out.println("findMember.Name = " + findMember.getName()); tx.commit(); } catch(Exception e){ tx.rollback(); } finally{ em.close(); } emf.close(); }}package xik.ShoppingMall.Domain;import lombok.Getter;import lombok.Setter;import javax.persistence.*;@Entity@Table(name="MEMBER")public class Member { @Getter @Setter @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 시스템에 저장하기 위해 시스템이 정하는 변수 @Getter @Setter @Column(name="name") private String name; // 고객이 입력한 데이터 @Getter @Setter @Column(name="phonenumber") private String phoneNumber; // 휴대폰 번호 @Getter @Setter @Enumerated(EnumType.STRING) @Column(name="grade") private Grade grade;}
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
CASCADE 종류 - ALL, PERSIST
정말 라이프 사이클을 다 맞춰야 한다 → ALL 저장할 때만 라이프 사이클 맞추고 나머지는 따로 → PERSIST 라고 설명해주셨는데 저장할 때 외에 저장할 때 외에 고려할만한 라이프 사이클이 있나요?? 그냥 어차피 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장하기 위해 사용하는 거라면 그 외에 어떤 게 있는지 궁금합니다..
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.flush와 em.clear
위와 같이 코드를 작성하였는데 flush와 clear를 모두 하지 않아도 멤버에서 팀을 조회할 수는 있는데 팀에서 멤버는 조회되지 않습니다. 그리고 flush만 하고 clear는 하지 않았을 때에도 역시 멤버에서 팀을 조회할 수는 있는데 팀에서 멤버는 조회되지 않습니다. flush와 clear를 모두 다 하면 강의에서 나오는 것과 같은 결과가 나옵니다. 이게 지금 상황이고 질문은 flush를 하나 안하나 영속성 컨텍스트에서 꺼내오면 될 것 같은데 왜 팀에서 멤버는 조회되지 않나요..? flush를 하고 clear를 하냐 안하냐에 따라 결과가 왜 달라지는지 궁금합니다. https://www.inflearn.com/questions/383243위 링크를 참고했으나 답변 내용에 따르면 clear는 그저 select문이 나오는지 확인하기 위해서 하는 것으로 보이는데 결과가 달라지는 이유가 궁금합니다. 답변해주시면 감사하겠습니다!