묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
계속 스프링부트 실행에 오류가 납니다
알려주신대로 설정하였고 , 초기 설정을 하였는데 저런 오류가 계속 납니다 자바 sdk는 java17로 설정해두었습니다 오류는 A problem occurred configuring root project 'jpashop'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.6.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.6> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.6 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.1.6 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.1.6 declares a component for use during runtime, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 11)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.1.6 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5') 입니다
-
해결됨실전! Querydsl
@Transactional과 @PostConstruct를 나눈 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@PostConstruct나 @Transactional이나 둘 다 프록시인데,프록시는 보통 외부에서 호출을 하면 가로채서 먼저 프록시 메소드를 실행하고 넘겨주는데, 저거는 둘 다 프록시라 뭐를 해야할 지 몰라서? 프록시 메소드는 하나만 실행되서? 같이 쓰지 않는건가요?
-
해결됨실전! Querydsl
allEq() 만들기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]allEq를 만들기 위해서, private BooleanExpression allEq(MemberSearchCondition condition){ return usernameEq(condition.getUsername()) .and(teamNameEq(condition.getTeamName())) .and(ageGoe(condition.getAgeGoe())) .and(ageLoe(condition.getAgeLoe())); }이런 식의 코드를 만들기 위해서는 null 대신 빈 표현식을 반환해야 하는데, new BooleanExpression()은 안되는 모양이예요.그래서 찾아봤더니,null 대신 Expressions.TRUE를 중립조건으로 반환하게 하는거예요.근데 이러면 나가는 쿼리가, /* select member1.id, member1.username, member1.age, team.id, team.name from Member member1 left join member1.team as team where true and team.name = ?1 and true and true */ select m1_0.member_id, m1_0.username, m1_0.age, m1_0.team_id, t1_0.name from member m1_0 left join team t1_0 on t1_0.team_id=m1_0.team_id where true and t1_0.name=? and true and true이렇게 true로 섞여서 나가지만, 저런 것들은 DB내에서 최적화 해줘서 문제가 없다고 해요. 근데 아무래도 익숙하지 않은 상황에서는 다른 분이 보았을 때 저게 뭐지? 왜 저 쿼리가 나가지? 라는 생각을 할 것 같아요.그런데, 저 and true를 보고 아, 동적 쿼리를 사용했나? 라고 생각할 수 있는 사람끼리 본다면 굉장히 괜찮은 방법 같아요. 근데 여튼간에 보여지는 것 자체에는 의미없는 쿼리가 나가는 거라서, 유지보수 면에서 좀 그럴 것 같다는 생각이 들어서요.실무에서는 어떤가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
primitive && reference 질문입니다!
혹시 call of value가 primitive 타입의 저장 방식을 말하는 거고 call of reference가 reference 타입의 저장 방식을 말하는 걸까요??(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jpa와 db 동작확인 테스트 중인데 오류가납니다.
package jpabook.jpashop; 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.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); //when Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } }위에는 제가 작성한 코드고 아래가 오류 내용입니다.어떻게 해결해야할까요? java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@7971c2a9 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@50eac852, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a192cfe, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1dde4cb2, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@42e99e4a, org.springframework.boot.test.context.SpringBootTestAnnotation@5c96f405], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:143) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect')
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
나의 인생에 첫번째 선물
강사님께 자바를 통해 프로그래밍의 첫발을 내딛었습니다. 저의 인생에 있어서 보물(이 강의) 제공 해주셔서 감사합니다.작성자 올림
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa 프로그래밍 -기본편 섹션4_실전 예제1 강의 질문
jpa 프로그래밍 기본편 강의 질문으로 localdatetime이 빨간줄이 계속 나는데 문제가 뭘까요?파일 공유 하겠습니다.https://drive.google.com/drive/folders/1RGt1WO-WGyNj029uUambw0K1efMINqwl?usp=sharing
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트케이스 2번 질문
안녕하세요 선생님! 문제 의도상 K개의 합이 모두 같을 수도 있으니,K번째 수가 없다면 -1을 출력하는 조건은 이해하였습니다그런데 문제에 K는 50 이하의 값이라고 명시되있는데테스트케이스에는 K가 1200인 케이스가 있어서 저는 이 부분이 잘못되었다고 생각하여 글 올립니다!감사합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
PersistantBag으로 감싸는 이유가 이게 맞을까요?
일대다 관계에서 List<Member> members= new ArrayList<>();getMembers라고 조회하면 프록시 객체가 아니라 PersistantBag으로 감싸고 안에 회원 한명을 조회하던 여러명을 조회던 그때 참조하는 Member를 전부 가져오고 거기서 꺼내서 주는거같아요. 이렇게 하는 이유는 연관관계 주인이 대상테이블에 있기 때문이라고 이해를 했습니다. 주테이블에 연관관계 주인으로 설정한다고 해도 데이터베이스 테이블 구조는 다 쪽에 외래키 칼럼이 있기 때문에일 쪽에서는 자신을 참조하는 테이블 레코드를 알수 없기때문에 (조회를 하건,수정을하건,삭제를 해야 그때 조회하는걸로 알고 있습니다.)지연 로딩이 불가능하고 즉시로딩이 되는거같은데 이렇게 이해하는게 맞을까요?
-
해결됨자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
[스레드 중지 – flag variable vs interrupt() - 2] 강의에서 나오는 Cache clear 와 관련된 질문
안녕하세요 선생님, 질문이 있습니다.[스레드 중지 – flag variable vs interrupt() - 2] 강의 - 9:00 ~ 9:08 즈음에 쓰레드 Context Switch 에 의해서 캐시가 비워진다고 말씀해주셨는데요.제가 [Context Switch] 강이 - 16:50 즈음에 나오는 ppt 하단의 프로세스 vs 쓰레드 목차에는 CPU 캐시 초기화는 프레세스 컨텍스트 스위칭에서 일어난다고 나옵니다. 음... 혹시, 쓰레드 Context Switch 도 CPU 캐시를 초기화할 수 있는 건가요??
-
해결됨자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
[스레드 중지 – flag variable vs interrupt() - 2] 강의 Context Switch 관련 질문있습니다.
안녕하세요 선생님, 재밌게 강의 보고 있는 개발자입니다.제가 [스레드 중지 – flag variable vs interrupt() - 2] 강의에서 9:15 즈음에, Thread.sleep(1) 을 통해서 Context Switch 를 강제하는 방법을 봤습니다. 결과적으로 정상 종료가 되었구요. 그런데 문득 의문점이 들더군요.제 의문점을 기반으로 질문을 하자면 아래와 같습니다. Question:굳이 Thread.sleep(1) 을 하지 않아도 제 컴퓨터에는 이미 무수히 많은 프로세스와 쓰레드가 존재하니, 언젠가는 Java 의 Thread 도 Context Switch 가 일어나지 않나요?? 그러면 결과적으로 계속 기다리면 언젠가는 Thread.sleep(1) 을 안 써도 실행한 main 문이 정상 종료되는게 맞지 않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
코드 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.코드를 똑같이 작성해도 다음과 같이 오류가 발생하는데 어떤 부분이 문제일까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
갑자기 어노테이션 모두 안먹힘
안녕하세요. 4강 종료 후 도서관 책 등록 강의를 듣기 위해서 인텔리제이 실행을 시켰는데,모든 어노테이션들이 다 빨간줄로 되면서 사용할 수 없다는 식으로 나옵니다.build.gradle 들어가서 새로고침도 해보고, web부분 주석 후 새로고침도 해봤는데 빨간줄은 계속 나와있습니다.갑자기 왜 이러는 건지, 해결방법 알려주실 수 있으실까요?ㅠㅠ
-
해결됨실전! Querydsl
이제는 DB의 function을 등록하지 않아도 쓸 수 있지 않나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]하이버네이트 6 오면서 바뀌었다고 기억하고 있었는데..
-
해결됨실전! Querydsl
searchSimple 에 관한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Override public Page<MemberTeamDto> searchPageSimple(MemberSearchCondition condition, Pageable pageable) { List<MemberTeamDto> content = queryFactory .select(new QMemberTeamDto( member.id, member.username, member.age, team.id, team.name )) .from(member) .leftJoin(member.team, team) // where 방식이 더 좋은 이유는 무엇일까? 재사용성이 좋아진다. 이게 가장 큰 객체지향의 특징인데 이걸 이용할 수 있음! .where(usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe())) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); int totalSize = content.size(); log.info("total size = " + totalSize); return new PageImpl<>(content, pageable, totalSize); }serachSimple을 아래와 같이 작성하였습니다.fetchResults가 deprecated 되어서 이렇게 작성하였는데postman에서 실행결과 total 페이지가 들어간 수로만 나옵니다.이유를 알 수 있을까요??
-
미해결실습으로 배우는 선착순 이벤트 시스템
레디스 적용 시 여러번응모 테스트에서 에러가 발생합니다.
@SpringBootTest class ApplyServiceTest { @Autowired private ApplyService applyService; @Autowired private CouponRepository couponRepository; @Test public void 한번만응모() { applyService.apply(1L); long count = couponRepository.count(); assertThat(count).isEqualTo(1); } @Test public void 여러번응모() throws InterruptedException { int threadCount = 1000; //ExecutorService : 병렬 작업을 간단하게 할 수 있게 도와주는 Java API ExecutorService executorService = Executors.newFixedThreadPool(32); // CountDownLatch : 다른 Thread에서 수행하는 작업을 기다리도록 도와주는 클래스 CountDownLatch latch = new CountDownLatch(threadCount); for (int i=0; i<threadCount; i++) { long userId = i; executorService.submit(() -> { try { applyService.apply(userId); } finally { latch.countDown(); } }); } latch.await(); long count = couponRepository.count(); assertThat(count).isEqualTo(100); } }@Service public class ApplyService { private final CouponRepository couponRepository; private final CouponCountRepository couponCountRepository; public ApplyService(CouponRepository couponRepository, CouponCountRepository couponCountRepository) { this.couponRepository = couponRepository; this.couponCountRepository = couponCountRepository; } public void apply(Long userId) { Long count = couponCountRepository.increment(); System.out.println("count : "+count); // long count = couponRepository.count(); if (count > 100) { return; } Coupon save = couponRepository.save(new Coupon(userId)); System.out.println("save! : "+save.getId()); } }@Repository public class CouponCountRepository { private final RedisTemplate<String, String> redisTemplate; public CouponCountRepository(RedisTemplate<String, String> redisTemplate) { this.redisTemplate = redisTemplate; } public Long increment() { try { return redisTemplate .opsForValue() .increment("coupon_count"); } catch (Exception e) { e.printStackTrace(); throw e; } } }여러번응모 테스트 케이스 실행CouponCountRepository.java의 increment 메서드에서 다음과 같은 에러가 발생하고 있습니다.제일 처음에 나는 에러메시지는 다음과 같습니다.Caused by: io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.쿠폰도 정상적으로 등록되지 않아 아에 0개로 출력되고 있습니다.구글링을 해봤지만 도저히 원인을 찾을 수가 없어요 ..++추가로, 도커에서 레디스 컨테이너와 이미지를 삭제한 후 실행해도 동일한 결과가 나타나는 것을 확인됩니다.강의에서 나온 그대로 도커 명령어를 사용해서 레디스를 pull 하였는데 왜 컨테이너와 이미지를 삭제해도 동일한 오류가 발생하는 걸까요?도커에서 레디스 컨테이너와 이미지를 삭제하고 ApiApplication을 실행하면 정상적으로 실행됩니다...++ 정리 드리자면, 1. 강의를 그대로 따라했는데 RedisCommandExecutionException가 발생하면서 테스트 케이스를 실행할 수 없는 이유2. 강의에서 나온 그대로 도커 명령어를 사용해서 레디스를 pull 하였는데 왜 컨테이너와 이미지를 삭제해도 동일한 오류가 발생하는 이유3. 도커에서 레디스 컨테이너와 이미지를 모두 삭제하고 ApiApplication를 실행했을 때 정상적으로 실행되는 이유답변 부탁드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
[SpringBoot 3.2.0]SequenceGenerator 에러 발생
현재 Spring Boot 3.2.0에서 h2 database 2.1.214를 사용하더라도 문제가 발생합니다.SequenceGenerator를 allocationSize 1보다 큰 값으로 설정할 경우 에러가 발생합니다.package hellojpa; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor @Entity @SequenceGenerator( name = "MEMBER_SEQ_GENERATOR", sequenceName = "MEMBER_SEQ", initialValue = 1, allocationSize = 50 ) public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MEMBER_SEQ_GENERATOR") private Long id; @Column(name = "name", nullable = false) private String username; }현재 h2 버전을 2.2.222로 변경한 결과 정상적으로 동작합니다.다들 참고 부탁드립니다.
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
Logger 문의
안녕하세요~ 해당 강의를 촬영한 시점이 2년전정도? 되는거 같은데Logger::OOO 이 사용이 되지 않는다면 @Slf4j어노테이션 사용을 권장드립니다.log.info 메서드를 통해 로깅을 하실 수 있어요
-
해결됨김영한의 실전 자바 - 기본편
기본형 참조형 관련 질문
기본형과 참조형에 대하여 궁금증이 생겨서 질문을 남깁니다.public class question { public static void main(String[] args) { int a = 10; doubleNumber(a); System.out.println("a = " + a); } public static void doubleNumber(int x){ int result = x*2; System.out.println("doubleResult = " + result); } }doubleNumber라는 메서드를 만나게 되면 int x에 a의 값인 10이 복사되어 들어간 다음 2배 증가된 이후 result에 대입이 된 이후 print를 한 뒤에 메서드가 종료되면 result가 사라지는 것으로 알고있습니다.public class Method2 { public static void main(String[] args) { Student student1 = createStudent("학생1", 15, 90); Student student2 = createStudent("학생2", 17, 80); printStudent(student1); printStudent(student2); } static Student createStudent(String name,int age, int grade){ Student student = new Student(); student.name = name; student.age=age; student.grade = grade; return student; } static void printStudent(Student student){ System.out.println("이름:" +student.name+"나이:"+student.age+"성적:"+student.grade); } }createStudent라는 메서드에서는 student의 참조값을 리턴을 하기 때문에 Student student1=createStudent()를 하게 되면 new Student를 실행한 그 객체의 참조값이 넘어오는 것 까지는 이해를 했습니다. createStudent메서드가 끝나면 메서드 안에 있는 student는 계속 살아있는 것인지 아니면 다른 어떤 것들이 있는지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Distinct 와 Set 사용에 대해서 질문이 있습니다.
일대다 관계에서 컬렉션을 조회하면 조회 결과 테이블을 엔티티에 매핑하다보니 JPA는 그대로 중복된 객체를 반환한다고 이해를 했습니다. 그런데 중복을 제거하기 위해서 Distinct 연산자를 붙이면 쿼리에도 Distinct가 들어가면서 SQL이 실행이 되는데요 영속성 컨택스트에서 같은 식별자를 가진 엔티티는 동일성을 보장하니까 불필요한 SQL이 포함된 Distinct보다HashSet<>으로 중복을 제거하는 방법은 별로일까요?