inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

fetchUseditems 나 fetchUseditem에 제목이 어떤걸로 사용하나요?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

판매자: name 2019 LTE 32GB: remarks 240.120원: price 내용: contents 태그: tags 찜: pickedCount 주소: useditemAddress 를 사용을 하는데 "삼성전자 갤럭시탭 A 10.1" 이건 어디서 가져왔는지 모르겠습니다. title은 playground를 봐도 안 나와 있는데 어떤 걸 사용을 해야 하나요?

  • react
  • node.js
  • seo
  • graphql
  • next.js
초무 댓글 2 좋아요 0 조회수 210

if 문 작성 시 else 도 함께 작성해주는 것이 좋나요?

미해결

김영한의 실전 자바 - 중급 2편

문제 1번의 경우 if 구문을 사용할 때 저는 else 를 안 넣고 바로 return 으로 표현했거든요. static <T extends BioUnit> T maxHp(T unit1, T unit2) { if (unit1.getHp() > unit2.getHp()) { return unit1; } return unit2; } 답안엔 else 를 같이 쓰는 것으로 나와서 혹시 else를 쓰고 안 쓰고를 결정하는 메뉴얼이나 혹은 더 좋은 코드의 기준이 있을까요? ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
맥스 댓글 1 좋아요 0 조회수 275

연관관계 주인이 아닌 엔티티의 참조변수에는 왜 JPA 어노테이션이 붙어지는 건가요?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

제가 이해가 안가는 것이 있어 질문드려요 기존 Team 과 Member 예시로 질문할게요 Member가 연관관계의 주인이고 Team 은 객체 상 그저 Member에 대한 참조만 갖는 List<Member> members 만 있는 예시로 질문하겠습니다 public void 연관관계_설정() { //회원1 저장 Member member1 = new Member("member1", "회원1"); em.persist(member1); //회원2 저장 Member member2 = new Member("member2", "회원2"); em.persist(member2); Team team1 = new Team("team1", "팀1"); //연관관계 설정 member1.setTeam(team1); team.getMembers().add(member1); member2.setTeam(team1); team.getMembers().add(member2); em.persist(team1); } 여기서 team.getMembers().add(member1); 은 사실 상 DB를 바꾸지 않는 것인데 예시 상 Member와 Team은 객체 단에서 서로 양방향 참조를 해야하기 때문에 List를 넣어주거잖아요? 그럼 Team 입장에서 List<Members> members는 JPA, 즉 DB 작업과 전혀 상관이 없는 그저 어플리케이션 입장에서 양방향 참조를 해야할 상황(기능)이 있어서 추가된 것인데 왜 어노테이션을 써줘야하는거죠? 어노테이션을 붙이는 이유가 JPA가 해석할 것이 있어서 붙이는거잖아요? 근데 Team의 List<Members> members는 JPA가 해석해봤자 DB를 변경하는 일도 아니고 그저 어플리케이션 계층에서 사용되는 변수인데 왜 JPA 어노테이션(@OneToMany)를 붙이는거죠?? ai 봇 말고 튜터님께서 답변해주시면 감사하겠습니다!!

  • java
  • jpa
현욱김 댓글 1 좋아요 0 조회수 122

컬렉션 조회 최적화와 동적쿼리에 대한 질문입니다

미해결

실전! Querydsl

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 강사님! 최근 JPA2 에서 수강한 컬렉션 최적화와 QueryDSL을 통해서 주변 병원 조회 기능을 구현하던중에 궁금한것이 생겨서 질문남깁니다. 현재 @Entity @Getter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @SQLDelete(sql = "UPDATE store SET store_status = 'DEACTIVATE' WHERE store_id=?") @SQLRestriction("store_status = 'ACTIVATE'") @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn // 하위 테이블의 구분 컬럼 생성 @Table(name = "store", indexes = { @Index(name = "idx_store_name", columnList = "storeName") }) public abstract class Store extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "store_id") private Long storeId; @NotNull @Size(min = 2) @Column(nullable = false) private String storeName; private String storePhone; private String thumbnailUrl; private String notice; private String websiteLink; @Column(columnDefinition = "TEXT") private String storeInfo; private String storeInfoPhoto; @Enumerated(EnumType.STRING) private BaseStatus storeStatus; @Embedded private Address address; @OneToMany(mappedBy = "store", fetch = FetchType.LAZY) private List<BusinessHour> businessHours = new ArrayList<>(); @OneToMany(mappedBy = "store", fetch = FetchType.LAZY) private List<StorePhoto> storePhotos = new ArrayList<>(); // @OneToMany(mappedBy = "store", fetch = FetchType.LAZY) // private List<Reserve> reserves = new ArrayList<>(); @OneToMany(mappedBy = "store", fetch = FetchType.LAZY) private List<Review> reviews = new ArrayList<>(); @OneToOne(mappedBy = "store", fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false) private RegistrationInfo registrationInfo; } 현재 이런식으로 Store 엔티티가 준비되어 있는 상황입니다. 아래는 이를 상속한 Hospital 엔티티입니다. @Entity @Getter @Builder @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @DiscriminatorValue("H") @OnDelete(action = OnDeleteAction.CASCADE) @Table(name = "hospital") public class Hospital extends Store { private String additionalServiceTag; @OneToMany(mappedBy = "hospital", fetch = FetchType.LAZY) private List<TagMapper> tags = new ArrayList<>(); } 변경전 코드 List<StoreQueryInfo> hospitalInfoList = jpaQueryFactory .select( Projections.constructor( StoreQueryInfo.class, hospital.storeId.as("storeId"), hospital.storeName.as("storeName"), hospital.thumbnailUrl.as("thumbnailUrl"), businessHour.startTime.as("startTime"), businessHour.endTime.as("endTime"), businessHour.breakStartTime.as("breakStartTime"), businessHour.breakEndTime.as("breakEndTime"), review.reviewId.count().as("reviewCount"), review.rating.avg().as("ratingAvg"), Expressions.stringTemplate( "ST_Distance_Sphere(ST_PointFromText({0}, 4326), {1})", point, hospital.address.point ).castToNum(Double.class).as("distance") ) ).from(hospital) .leftJoin(hospital.businessHours, businessHour) .on(businessHour.dayOfWeek.eq(dayOfWeek)) .leftJoin(hospital.reviews, review) .leftJoin(hospital.tags, tagMapper) .leftJoin(tagMapper.hospitalTag, hospitalTag) .where( inDistance(point, queryCond.radius()), businessHourEq(queryCond.businessHourCond()), specialitiesEq(queryCond.specialitiesCond()), emergencyEq(queryCond.emergencyCond()), isOpen(queryCond.openCond(), Time.valueOf(now.minusHours(4))) ) .groupBy( hospital.storeId, hospital.storeName, businessHour.startTime, businessHour.endTime, businessHour.breakStartTime, businessHour.breakEndTime ) .orderBy(Expressions.stringTemplate( "ST_Distance_Sphere(ST_PointFromText({0}, 4326), {1})", point, hospital.address.point ).asc()) .fetch(); 변경 후 코드 (변경전의 동적쿼리 미적용) public List<StoreQueryTotalInfo> findHospitalOptimization( Pageable pageable, int dayOfWeek, String point, LocalTime now, HospitalQueryCond queryCond) { NumberPath<Double> distanceAlias = Expressions.numberPath(Double.class, "distance"); // 일단 반경 내의 병원 정보를 모두 가져옴. List<Tuple> hospitals = jpaQueryFactory .select( hospital, Expressions.stringTemplate( "ST_Distance_Sphere(ST_PointFromText({0}, 4326), {1})", point, hospital.address.point ).castToNum(Double.class).as(distanceAlias) ).from(hospital) .leftJoin(hospital.registrationInfo, registrationInfo).fetchJoin() .where(inDistance(point, queryCond.radius())) .fetch(); // // 병원 돌면서 DTO 채우기 List<TestDTO> list = new ArrayList<>(); for (Tuple tuple : hospitals) { Hospital hospital1 = tuple.get(hospital); Double distance = tuple.get(distanceAlias); log.info("Hospital: " + hospital1 + ", Distance: " + distance); list.add(TestDTO.builder() .storeId(hospital1.getStoreId()) .storeName(hospital1.getStoreName()) .thumbnailUrl(hospital1.getThumbnailUrl()) .time(Times.of(hospital1.getBusinessHours(), dayOfWeek)) .reviewCount((long) hospital1.getReviews().size()) .ratingAvg(Review.getRatingAvg(hospital1.getReviews())) .distance(formatDistance(distance)) .tags(TagInfo.from(hospital1.getTags())) .build()); } return null; } 강의를 듣기 전에는 @OneToMany 관계까지 모두 leftJoin()을 이용해서 데이터를 가져왔는데 쿼리가 무진장 많이 나가는 상황이 발생하더라고요. 그래서 컬렉션 쿼리 최적화 수업을 들은 후 위의 코드로 변경하였습니다. (@ToOne 관계만 fetchJoin 하기, @OneToMany 관계는 가져와진 객체에 직접 접근해서 가져오는 방식으로 진행했습니다.) 근데 이때 동적쿼리를 어떤식으로 적용해야하는지 감이 잡히지 않더라고요..! 일단 원하는 반경 내의 병원을 모두 조회해서 가져오기 repository단에서 반복문을 돌면서 queryCond의 null값을 체크하며 수동으로 동적쿼리를 적용해야 하기 (코드단에서 동적쿼리 적용) 위의 방식을 생각하고 있는데 이게 과연 동적 쿼리(?)가 맞는지 의구심이 들더라고요. 적용해야 하는 동적쿼리는 아래 코드와 같습니다. private BooleanExpression businessHourEq(String businessHourCond) { return businessHourCond != null ? hospitalTag.tagType.eq(HospitalTagType.BUSINESSHOUR).and(hospitalTag.tagContent.eq(businessHourCond)) : null; } private BooleanExpression specialitiesEq(String specialitiesCond) { return specialitiesCond != null ? hospitalTag.tagType.eq(HospitalTagType.SPECIALITIES).and(hospitalTag.tagContent.eq(specialitiesCond)) : null; } private BooleanExpression emergencyEq(String emergencyCond) { return emergencyCond.equals("EMERGENCY") ? hospitalTag.tagType.eq(HospitalTagType.EMERGENCY).and(hospitalTag.tagContent.eq(emergencyCond)) : null; } private BooleanExpression inDistance(String point, Integer radius) { return radius != null ? Expressions.booleanTemplate( "ST_Contains(ST_Buffer(ST_PointFromText({0}, 4326), {1}), {2})", point, radius, hospital.address.point ) : null; } private BooleanExpression isOpen(String isOpen, Time now) { return isOpen.equals("OPEN") ? businessHour.startTime.isNotNull().and(businessHour.endTime.isNotNull()) .and(businessHour.startTime.loe(now)).and(businessHour.endTime.goe(now)) : null; }

  • java
  • jpa
  • querydsl
댓글 2 좋아요 0 조회수 303

다중 컨테이너 실행 (APP)

미해결

초보를 위한 도커 안내서

안녕하세요 :) 이제 막 강의 보기 시작했는데 궁금한게 생겨 질문 드립니다. 컨테이너 하나에 애플리케이션 한 개만 올릴 수 있는 건가요 ?

  • docker
it2un 댓글 1 좋아요 0 조회수 203

빌드가 안돼요

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

여러가지 바꿔가면서 입력해봐도 다 안 돼요 윈도우 사용중이에요

  • java
  • spring
  • mvc
  • spring-boot
muzi 댓글 2 좋아요 0 조회수 229

이론파일 오류

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

이론 파일이 자꾸 인쇄하려고 하니 오류가 나는데 다른 방법으로 업로드해주실 수 없으신가요?

  • python
  • java
  • c
  • 정보처리기사
태라 댓글 1 좋아요 0 조회수 224

프로젝트 환경 변수 설정 에서 복사 붙여넣기 application-docker.yml

해결됨

입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기

application-default.yml application-docker.yml 프로젝트 환경 변수 설정 에서 복사 붙여넣기 할때 들여쓰기 적용이 안되어. 일일이 적용했습니다.-windows- 그리고 아래와 같이 추가 설명을 달아주셨으면 좋겠네요 spring: # Spring 프레임워크 설정 jpa: # JPA (Java Persistence API) 설정 database: h2 # 사용할 데이터베이스로 H2를 지정 open-in-view: false # "Open EntityManager in View" 패턴 비활성화 show-sql: true # SQL 쿼리를 콘솔에 출력 hibernate: # Hibernate 관련 설정 ddl-auto: create # 데이터베이스 스키마를 자동으로 생성 properties: # 추가적인 Hibernate 속성 설정 hibernate: format_sql: false # SQL 쿼리를 포맷하지 않음 # default_batch_fetch_size: 10 # 주석 처리된 설정, 배치로 가져올 때 한 번에 가져올 개수 (사용되지 않음) datasource: # 데이터 소스 설정 url: jdbc:h2:mem:portfolio # H2 메모리 데이터베이스의 JDBC URL username: sa # 데이터베이스 사용자 이름 password: # 데이터베이스 비밀번호 (빈 값) driver-class-name: org.h2.Driver # H2 데이터베이스 드라이버 클래스 이름 h2: # H2 데이터베이스 관련 추가 설정 console: # H2 콘솔 설정 enabled: true # H2 콘솔을 활성화 path: /h2-console # H2 콘솔에 접근할 경로

  • kotlin
  • mysql
  • docker
  • spring-boot
  • jpa
늘해랑 댓글 2 좋아요 0 조회수 246

프로젝트 생성 강의 듣고 있는데 원래 실행하는 시간이 오래걸리나요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

build and run using, run tests using을 Gradle(default)로 하든 IntelliJ IDEA로 바꾸든 실행은 되는데 작업이 종료가 안되고 계속 돌아갑니다. 위에 오류는 너무 오래 걸려서 중간에 제가 종료하면 뜨는 오류 메세지입니다 5분 넘게 걸리는데 원래그런건지 모르겠습니다 ㅠㅠ 실행도 한 번도 성공한 적도 없습니다 제 노트북 사양이 나빠서 그런걸까요?

  • java
  • spring
  • mvc
  • spring-boot
댓글 2 좋아요 0 조회수 468

INSERT 쿼리 문제

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 해당 강의 11분 44초 쯤 JpaMain 실행 시 INSERT 쿼리가 나가는 것을 볼 수가 있는데 제가 실습해본 결과 detached entity passed to persist: hellojpa.Member 에러가 발생합니다. 에러를 해결하려고 구글링 해본 결과 엔티티에 @GeneratedValue를 사용해서 값을 자동으로 생성하겠다고 선언을 했는데 아이디를 직접 세팅 후 persist를 호출해서 에러가 발생한다고 나와 있어서 JpaMain에서 member.setTeamId(team.getId())를 지우고 실행해봤는데 정상적으로 INSERT 쿼리가 나가는 것을 확인했습니다. 하지만 Member 엔티티에서 @GeneratedValue를 id에만 적용하고 teamId에는 @GeneratedValue를 적용하지 않았는데 해당 에러가 왜 발생한지 잘 모르겠습니다. 해당 에러 및 해결 방법에 대해 알려주시면 감사하겠습니다.

  • java
  • jpa
잘부탁드려요 댓글 1 좋아요 0 조회수 215

1:N 양방향 매핑할 때 저장순서에 따른 쿼리

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 연관관계 코드로 쳐보면서 하다가 이상한 부분이 있어서 궁금증이 생겨 질문합니다. Member : N Team : 1 로 Member가 연관관계 주인인 상태로 member와 team 객체의 연관관계를 설정하고 public class Member { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; } public class Team { @OneToMany(mappedBy = "team") // Member의 team과 연결되어있다. private List<Member> members = new ArrayList<>(); } member 저장후 team 저장시 member insert team insert 가 나간 뒤에 member update 쿼리가 나가는데 이때 member의 모든 필드에 대한 업데이트 쿼리가 나갑니다. Member member = new Member(); member.setUsername("member1"); Team team = new Team(); team.setName("team1"); member.setTeam(team); team.getMembers().add(member); em.persist(member); em.persist(team); em.flush(); em.clear(); 이게 왜이런지 모르겠습니다. member가 먼저 추가되면서 teamId가 설정됬을 텐데 실질적인 team 이 데이터베이스에 없어서 team이 추가된 뒤에 연관관계를 맞추기위해 member의 모든 필드를 update했다고 봐야하나요? 그러면 teamId만 update 해주면 되는데 모든 필드를 업데이트하는 이유가 궁금합니다. 항상 감사합니다.

  • java
  • jpa
  • 1:n양방향매핑
허찬욱 댓글 2 좋아요 0 조회수 174

힙 , 메서드 영역

미해결

김영한의 실전 자바 - 기본편

자바 메모리 구조 강의 9:40 쯤에 제가 제대로 이해한게 맞는지 확인 부탁드립니다. Item1, Item2 인스턴스 2개를 생성하면 name, price, quantity 는 고유한 값을 가지므로 힙 영역에 보관되지만 getName 메서드, getTotalPrice 메서드는 메서드 영역에 보관된다. 이 말이 맞는지 확인 부탁드립니다.

  • java
  • 객체지향
ghuhan18 댓글 1 좋아요 0 조회수 237

보다 직관적으로 수정하면 안되나요?

미해결

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

interface IUseMoveToPageReturn { onClickMoveToPage: (path: string) => () => void } export const useMoveToPage = (): IUseMoveToPageReturn => { const router = useRouter() const onClickMoveToPage = (path: string) => () => { void router.push(path) } return {onClickMoveToPage} } 위 처럼 작성 후 <button onClick={onClickMoveToPage("/markets")}>마켓 이동</button> 호출 할 수도 있지만 import { useRouter } from "next/router" export const useMoveToPage = (path: string) => { const router = useRouter() return () => router.push(path) } 보다 직관적으로 하면 인터페이스로 typescript 지정 안하고 <button onClick={useMoveToPage("/boards")}>게시판 이동</button> 호출해서 쓸 수 있지 않나요?

  • react
  • node.js
  • seo
  • graphql
  • next.js
gkdlsb1234 댓글 1 좋아요 0 조회수 203

강의자료

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 올려주신 강의자료를 참조하여 깃허브 블로그에 올려도 괜찮을까요? 혹 저작권때문에 먼저 여쭤봅니다!

  • java
  • 객체지향
댓글 1 좋아요 0 조회수 199

질문)이론관련한 문제는 없는건가요?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

이론관련한 부분은 개념설명 요약본 존재, 문제는 프로그래밍 문제는 존재하지 않는 것 같아요. 혹시 프로그래밍 문제 + sql 문제만 다맞는 전략이기 때문일까요? sql응용문제도 따로없어서 의도가 궁금하여 질문드립니당

  • python
  • java
  • c
  • 정보처리기사
Seunghyeon Lee 댓글 1 좋아요 0 조회수 278

mysql connector ? 오류 ㅠㅠ

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

communications link failure 오류가 나는데 mysql 재설치를 몇 번해도 연결이 안되네요 어떻게 해결해야할까요..?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
미니민 댓글 3 좋아요 0 조회수 667

함수와 재귀함수 하노이의 탑 부분 질문

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요 선생님 코드 관련 궁금한 부분이 있어서 질문드립니다. 하노이의 탑 코드를 보면 #include <stdio.h> void hanoi(int n, char from, char to, char aux) { if (n==1) { printf("디스크 1을 %c에서 %c로 이동\n", from, to); return; hanoi(n-1, from, aux, to); printf("디스크 %d을(를) %c에서 %c로 이동\n", n, from, to); hanoi(n-1, aux, to, from); } int main() { int num = 3; hanoi(num, 'A', 'C', 'B'); return 0; } 으로 되어있는데요. void hanoi로 함수를 호출하게 되면 n이 1이라면 void hanoi(int n, char from, char to, char aux) { if (n==1) { printf("디스크 1을 %c에서 %c로 이동\n", from, to); return; 첫번째 if 조건 절로 호출하게 되지만 만약 1이 아니면 아래 함수를 호출하는 거라면 else 등의 함수가 있어야 아래 함수로 내려갈 수 있는것이 아닌가 궁금한데요. void 함수에서는 요런부분이 생략이 가능한건지 아니면 제가 놓치고 있는 부분이 있는지 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
김현지 댓글 1 좋아요 0 조회수 236

em.clear()의 기능?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. package jpabook.jpashop; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; import jpabook.jpashop.domain.*; import org.hibernate.boot.model.source.spi.IdentifierSource; import javax.swing.text.html.parser.Entity; import java.time.LocalDateTime; import java.util.ArrayList; 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{ Address address = new Address("city1", "street1", "10000"); Member member = new Member(); Order order = new Order(); Delivery delivery = new Delivery(); List<Order> orders = new ArrayList<>(); member.setName("raewoo"); member.setAddress(address); order.setMember(member); order.setDelivery(delivery); orders.add(order); member.setOrders(orders); delivery.setOrder(order); delivery.setAddress(address); em.persist(member); em.persist(order); em.persist(delivery); em.flush(); em.clear(); System.out.println("================================"); Address address2 = new Address("city2", "street2", "10000"); Member findMember = em.find(Member.class, member.getId()); Order findOrder = em.find(Order.class, order.getId()); findMember.setAddress(address2); em.flush(); em.clear(); //여기!! System.out.println(findMember.getAddress().getCity()); System.out.println("================================"); System.out.println(findMember.getOrders().getFirst().getDelivery().getAddress().getCity()); tx.commit(); }catch (Exception e){ tx.rollback(); } finally { em.close(); } emf.close(); } } 이렇게 메인 메서드를 작성했습니다. //여기!! 라고 주석처리 해놓은 em.clear()가 있으면 콘솔에 아래와 같이 결과가 나오고요, Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.CREATED_DATE_TIME, m1_0.name, m1_0.UPDATED_DATE_TIME from Member m1_0 where m1_0.MEMBER_ID=? Hibernate: select o1_0.ORDER_ID, o1_0.CREATED_DATE_TIME, o1_0.DELIVERY_ID, o1_0.MEMBER_ID, o1_0.orderDate, o1_0.status, o1_0.UPDATED_DATE_TIME from ORDERS o1_0 where o1_0.ORDER_ID=? Hibernate: /* update for jpabook.jpashop.domain.Member */update Member set city=?, street=?, zipcode=?, CREATED_DATE_TIME=?, name=?, UPDATED_DATE_TIME=? where MEMBER_ID=? city2 ================================ 보시는 바와 같이 마지막 =======을 기준으로 system.out.println() 문이 하나 더 출력되어야하는데, 출력되지 않습니다. 하지만 em.clear()를 없애면 ================================ Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.CREATED_DATE_TIME, m1_0.name, m1_0.UPDATED_DATE_TIME from Member m1_0 where m1_0.MEMBER_ID=? Hibernate: select o1_0.ORDER_ID, o1_0.CREATED_DATE_TIME, o1_0.DELIVERY_ID, o1_0.MEMBER_ID, o1_0.orderDate, o1_0.status, o1_0.UPDATED_DATE_TIME from ORDERS o1_0 where o1_0.ORDER_ID=? Hibernate: /* update for jpabook.jpashop.domain.Member */update Member set city=?, street=?, zipcode=?, CREATED_DATE_TIME=?, name=?, UPDATED_DATE_TIME=? where MEMBER_ID=? city2 ================================ Hibernate: select o1_0.MEMBER_ID, o1_0.ORDER_ID, o1_0.CREATED_DATE_TIME, o1_0.DELIVERY_ID, o1_0.orderDate, o1_0.status, o1_0.UPDATED_DATE_TIME from ORDERS o1_0 where o1_0.MEMBER_ID=? Hibernate: select d1_0.DELIVERY_ID, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.CREATED_DATE_TIME, d1_0.status, d1_0.UPDATED_DATE_TIME from Delivery d1_0 where d1_0.DELIVERY_ID=? Hibernate: select o1_0.ORDER_ID, o1_0.CREATED_DATE_TIME, o1_0.DELIVERY_ID, o1_0.MEMBER_ID, o1_0.orderDate, o1_0.status, o1_0.UPDATED_DATE_TIME from ORDERS o1_0 where o1_0.DELIVERY_ID=? city1 이렇게 ORDERS를 조회하는 쿼리문이 나오고, city1이 정상적으로 출력됩니다. em.clear()가 있고 없고에 왜 이런 차이가 발생하는 건가요? 쿼리가 나가지 않는다던가, 어떤 null 값을 읽어온다던가 하면 예외가 나오거나, null로 나와야 할텐데, System.out.println()문 자체가 씹히는 건 어떤 경우인가요? 왜 이런건가요?

  • java
  • jpa
raewoo0908 댓글 1 좋아요 0 조회수 178

프로그램 수정해서 다시 docker에 이미지를 올릴땐 내용처럼 이렇게 하면되나요??

해결됨

입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기

안녕하세요. 이젠 기본적인 spring 기능은 이 강의로 많이 알게 되었습니다. 감사합니다. 빨리 강좌 하나 더 내주세요.... 코틀린 & spring 강좌가 너무 없어서 강의 찾아 다니느것도 일이네요 ... ==================================== Docker로 프로젝트 빌드 하기 . 강좌중에 만약 프로그램 수정하면 아래 처럼 하면 되나요? step 1) Gradle에서 jar 파일을 다시 만든다. ... 참고 ) 빌드중에 에러가 없어야함... test 코드에서도 에러가 없어야함 step2) docker-compose.yml 파일 새로고침 한다. step3) Dockerfile을 재 실행한다. step4) 도커가 잘 올라갔는지 확인한다. 프로그램 수정후엔 위 4개의 절차대로 진행하면 되나요?? 이걸로 회사의 개인 서버를 가지고 있는곳에 도커 깔고 동작 하면 서버의 기능으로 완벽할꺼 같은데 .... 그리고 구글 클라우드에도 프로그램 수정하면 도커에서 push up hub 를 누르고 docker-compose.yml 누르면 되나요?? 버전 수정 안해줘도 되나요? 추가 질문) 이건 뭐 제가 잘 모르고 좀 시간을 두고 확인해봐야 하는거라서 질문드리기 어렵지만 그래도 아시면 답변 부탁 드려용 ^^))) 테스트 코드 작성중 아래처럼 DSL로 작성하는 경우를 봤는데 꽤나 직관적이고 편리하게 되어 있더라구요... 아래 같은 테스트 코드 많이 사용하나요?? 비동기 방식에서만 사용하나요?? 테스트 코드 작성하는 방법이 꽤나 많아서 이걸 다 익혀야하는 생기네요 ㅠ.ㅠ 감사합니다. 다음 강의 꼭 내주세요. ^^

  • kotlin
  • mysql
  • docker
  • spring-boot
  • jpa
just kim 댓글 2 좋아요 0 조회수 653

테스트 코드와 관련하여 질문이 있습니다.

해결됨

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님! 테스트 코드와 관련하여 질문이 있습니다. 프로젝트를 해보면서 고민이 되었던 것 중 하나가 테스트 코드를 작성할 때 명확한 메서드명을 작성해야하는가에 대해서 고민이었습니다. @Dipslay로 어떤 테스트인지 명시를 하고 있음에도 메서드명이 명확한 것이 좋을까요?

  • java
  • spring
  • kotlin
  • spring-boot
  • 리팩토링
Jin Heung An 댓글 1 좋아요 1 조회수 223

인기 태그

인프런 TOP Writers

주간 인기글