묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
소스가 전혀 실행이 안됨
강의 1편때의 소스로도 실행이 안되서,다시 2편 소스로 수행하면 에러메시지가 잔뜩 나오는데너무 시작부터 불성실하게 시작하는거 아님?지금 소스 받아서 환경을 맞춰주고 강의를 시작해야지 대뜸시작하면 실행도 안되는 소스로 뭐 어떡하라고.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Transactional 했는데 롤백 문구가 안 떠요
다음과 같이 코드를 실행하면 강의 화면처럼 "Rolled back transaction for test"가 나와야 하는데 그렇지 않고 H2에서도 컬럼만 있는 빈 테이블입니다. 뭐가 문제일까요? package jpabook.jpashop; import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception { //given Member member = new Member(); member.setUsername("memeberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기 지연 저장소?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의를 듣다보니 flush 과정에서 쓰기 저장 지연소에 SQL이 저장된다고 설명하셨는데 이것이 뭔지 알 수 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
BookForm 객체에 toServiceDto() 메서드 사용 질문드립니다.
안녕하세요!ItemServiceDTOItemFormItemController위와 같이 ItemForm(BookForm) 클래스에 toServiceDTO()라는 빌더 메서드를 작성하였습니다. Controller에서 ItemForm의 빌더 메서드를 통해 ItemServiceDTO로 바로 변환해 Service단에 넘겨주었는데 위와 같이 구현해도 괜찮을까요? 만약 상관이 없다면 ItemForm에서 ItemServiceDTO를 의존하고 있는데 DTO끼리의 의존은 크게 신경 안써도 될까요? 좋은 강의 감사드립니다!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jpa jakarta가 오류나네요
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]javax로 여태 하다가 이번에 jpa하면서 막히길래 뭔가 했는데패키지를 jakarta로 바꿔달라해서 바꿔주었는데import부분에서 모든 클래스들이 jakarta로 설정을 하면에러가 뜨게 되네요 모든 클래스에 대해 java부분을 jakarta로바꾸기에는 jakarta가 없고 java가 있으며 그럼 이걸 어떻게 해야 하는걸까요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
jdk 설정 질문
혹시 원래 jdk17이 깔려있었는데sdk 버전 이걸로 하면안되고 선생님이 올려주신 자료 jdk를 설치해서 zulu-17로 설정을 해야할까요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
window
window 사용자는 Dbeaver, Doker 설치를 그냥 구글에 쳐서 다운만 받아두면 되는건가요?자료에 있는 window 개발 환경 구성하기는 다 다운 했습니다.(인텔리제이, h2데이타베이스, jdk17)
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
강의 자료가 안보이고 압출풀기가 안됩니다.
커뮤니티에 글올라온거 보고 압축 풀려고하는데 압축풀기가 안된다고 합니다폴더 이름을 바꿔도 계속 안됩니다.wer05003@naver.com으로 보내주실수있나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 업데이트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.영속성 컨텍스트 내에서 엔티티와 스냅샷을 비교한다고 했는데 엔티티는 member.setName("zzzzz")로 변경한 값인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
섹션 4 회원 기능 테스트에서 yml 파일을 test에 추가하면
23:18 에서 run을 하면 connection url 이 jdbc:h2:mem:testdb로 나타나는 것이 아니라 jdbc:h2:mem:4ea5215f-2678-4770-ad7b-4696fcde71b2 이렇게 특정 숫자로 나타나는데... 뭐가 문젠가요?그리고 test 파일에 붙여넣은 application.yml 파일도 main 폴더에 있는 yml파일처럼 초록색 잎사귀 모양으로 나타나는게 아니라 빨간색 y아이콘으로 나타나는데 이게 yml파일이 제대로 적용되지 않았다는건가요? 그래서 gpt를 참고해보니 src/test/resources 폴더가 Test Resources로 설정되어 있는지 확인합니다. 그렇지 않으면 폴더를 선택하고 Mark as: Test Resources로 설정합니다. 라고 해서 해보려 했더니 Source root 'C:\Users\jar05\OneDrive\바탕 화면\Github\JPA_study\jpashop\jpashop\src\test\resources' cannot be defined in module 'jpabook.jpashop' because it belongs to content of nested module 'jpabook.jpashop.test'이런 에러가 발생합니다..
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트하기 어려운 영역을 분리하는 과정
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 박우빈님, 강의 잘 듣고 있습니다다름이 아니라 '테스트하기 어려운 영역을 분리하기' 세션 중 아래 코드와 같이 createOrder() 메서드를 오버로딩하여 테스트가 어려운 영역을 분리하여 테스트를 진행해주셨습니다.여기서 실제로도 어려운 영역을 분리하여 테스트 하기 위해 실제 비즈니스 로직에 테스트를 위한 메서드를 오버로딩하여 테스트 하는지가 궁금증이 생겼습니다.실무에선 해당 Test 클래스 내에서 메서드를 오버로딩 하여 사용하는 방식인가 싶은 생각도 들었습니다.실무에선 어떤 식으로 오버로딩하여 사용하나요?public Order createOrder() { LocalDateTime currentDateTime = LocalDateTime.now(); LocalTime currentTime = currentDateTime.toLocalTime(); if(currentTime.isBefore(SHOP_OPEN_TIME) || currentTime.isAfter(SHOP_CLOSE_TIME)){ throw new IllegalArgumentException("주문 시간이 아닙니다. 관리자에 문의하세요"); } return new Order(currentDateTime, beverages); } public Order createOrder(LocalDateTime currentDateTime) { LocalTime currentTime = currentDateTime.toLocalTime(); if(currentTime.isBefore(SHOP_OPEN_TIME) || currentTime.isAfter(SHOP_CLOSE_TIME)){ throw new IllegalArgumentException("주문 시간이 아닙니다. 관리자에 문의하세요"); } return new Order(currentDateTime, beverages); }
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
[실습] 데이터베이스 초기화 에서 H2database포트가 8082 로 되어있는 문제
http://localhost:8082/login.jsp?jsessionid=c94509f47478b3f70298eba5b41775ac
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
validateDuplicateMember 메서드 유니크 제약조건 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]validateDuplicateMember 메서드에서 유니크 제약조건을 추가해준다고 설명을 해주셨습니다. Member 클래스에 name필드에 @Column(unique = true)를 추가해주는 것으로 유니크 제약조건을 만족시킬 수 있는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO를 API마다 만들어야 하는건가요?
프로젝트를 할때도 그렇고, 이번 강의에서도 그렇고 API를 위해request, response 각각 DTO를 설정해주었습니다.그러면 API의 개수가 많아지는 경우에도 그에 따라 각각 요청,응답의 DTO를 만들면 너무 복잡해지지는 않을까 하는걱정이 있습니다. 그럼에도 불구하고 DTO를 API 마다 만들어야 하는건가요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
실습1의 커버리지 관련 설명이 잘 이해되지 않습니다
"테스트 추가하기: h2를 이용한 repository 테스트" 편의 10:39 에서, "잘 커버된 것 같아요"라는 말을 하셨는데 이 상황을 이해하기가 어렵습니다.PostEntity 와 관련된 테스트가 없는데 PostEntity 의 라인 14%가 충족되었다고 나옵니다. 이런저런 이유로 그냥 채워지는 경우도 있습니다만, 하단의 첨부 사진과 같이 제 화면에서는 0%로 보입니다. 혹시 이 차이가 왜 발생하는지 아시나요? (저는 temurin-17, IntelliJ Ultimate 2014.1.4 을 쓰고 있습니다) UserEntity 에도 동일한 질문을 드릴 수 있을 것 같습니다.UserRepository 인터페이스는 메서드가 존재하는데 0개 있다고 표기되고 있습니다 ("0/0"). 왜 이렇게 나오는지 아시나요?UserRepository 는 사실상 아무 메서드도 없다고 판단되었기 때문에 커버리지가 100% 로 나온 듯 합니다. 그 위의 PostRepository 도 (테스트가 없는데) 100% 로 나왔으니 그렇게 해석하는게 맞는듯 합니다. 따라서 이 대목에서 커버리지가 아무것도 측정되지 않은 것 같습니다. (위 1,2 질문의 대답에 따라 달라질수도 있겠지만) 여기까지 제가 이해한게 맞을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
한글 깨짐
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요.강의 따라가다 막히는 부분이 있어서 질문 드립니다.gradle 설정에서 Build and run using과 Run tests using을 인텔리제이로 바꾸면 한글 깨짐은 해결이 되는데 gradle로 실행하게 되면 한글이 깨집니다.설정에 들어가서 인코딩도 모두 utf-8로 설정해도 콘솔로 출력할 때 한글이 깨지는 현상이 발생합니다. 검색해보니 build.gradle에 설정을 utf-8로 변경하는 것도 있던데 결과는 똑같습니다.해결하는 방법이 있을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
통합 테스트 시 변수 지정은 어떻게 해주는게 좋을까요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. DB_URL과 같이 변수로 지정하여 통합 테스트를 수행할 경우 따로 설정해주어야하는데요. 저는 보통 인텔리제이에서 environment variables에 추가하여 실행해줍니다. 그런데 CI에서 빌드를 해줄 경우에도 변수를 지정해주어야하는데요. 테스트에도 지정하고 빌드할 때에도 지정해주는 것이 비효율적인것 같습니다. 이럴 경우 어떻게 설정해주는게 좋을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 주인이 아닌 엔티티의 참조변수에는 왜 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 봇 말고 튜터님께서 답변해주시면 감사하겠습니다!!
-
미해결실전! 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; }
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
프로젝트 환경 변수 설정 에서 복사 붙여넣기 application-docker.yml
application-default.ymlapplication-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 콘솔에 접근할 경로