묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Order 테이블의 '전체 주문 가격 조회' 메서드의 위치
전체 주문 가격을 조회하는 메서드(getTotalPrice)가 Order 클래스에 위치하고 있습니다. 그런데 주문 상품과 그 수량에 대한 정보는 OrderItem에 있습니다. 따라서 해당 엔티티에 전체 주문 가격을 조회하는 로직이 있어야 자연스러울 것 같은데 강의에서는 Order에 위치하고 있습니다. 전체 주문 가격을 조회하는 메서드가 둘 중 어디에 있어도 상관 없는건가요, 아니면 강의에서처럼 Order 클래스에 있어야만 하는데 제가 놓친 것이 있을까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
springSecurity
이미 질문남기신 분들이 많기에 해당 코드들을 따라서 실행하려고 해 보았으나 스프링 시큐리티 버젼이 올라감에 따라 새롭게 코드를 작성을 해보기 위해 문서를 참고해서 수정을 했습니다만 접속을 하려고 보니 HTTP ERROR 403 에러가 뜨면서 localhost접근이 막히더군요 혹시 고쳐야할 부분이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원웹기능-홈/ Process finished with exit code 1
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]home.html까지 만들고 run을 했는데Action:Consider defining a bean of type 'hello.hellospring.domain.Member' in your configuration.Process finished with exit code 1 이런 오류가 뜹니다.domain.Member는 package hello.hellospring.domain; public class Member { private Long id; private String name; 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; } }입니다.
-
미해결실전! 스프링 데이터 JPA
JpaMetamodelEntityInformation 내부의 isNew 메서드에서 조건 분기 시 다음 조건은 무엇을 의미하나요?
public boolean isNew(T entity) { if (!this.versionAttribute.isEmpty() && !(Boolean)this.versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return (Boolean)this.versionAttribute.map((it) -> { return wrapper.getPropertyValue(it.getName()) == null; }).orElse(true); } else { return super.isNew(entity); } } 조건문을 타지 않고 else 절로 넘어가면 super.isNew()를 호출하고, 상위 추상 클래스인 AbstractEntityInformation 클래스의 isNew() 메서드에서 Entity id 필드가 Null, 0L인지 판단하는 걸로 이해했습니다.강의 범위가 아니긴 하지만 JpaMetamodelEntityInformation 클래스의 isNew() 내에서 versionAttribute가 존재하는지 확인하는 부분은 어떤 것을 확인하는 것인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 초기 실행 문제
The Web Console server could not be started. Possible cause: another server is already running at http://192.168.0.25:8082Root cause: Exception opening port "8082" (port may be in use), cause: "java.net.BindException: Address already in use: bind" [90061-224]Exception in thread "main" org.h2.jdbc.JdbcSQLNonTransientConnectionException: Exception opening port "8082" (port may be in use), cause: "java.net.BindException: Address already in use: bind" [90061-224]at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)at org.h2.message.DbException.get(DbException.java:212)at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:211)at org.h2.util.NetUtils.createServerSocket(NetUtils.java:177)at org.h2.server.web.WebServer.start(WebServer.java:412)at org.h2.tools.Server.start(Server.java:548)at org.h2.tools.Console.runTool(Console.java:216)at org.h2.tools.Console.main(Console.java:72)Caused by: java.net.BindException: Address already in use: bindat java.base/sun.nio.ch.Net.bind0(Native Method)at java.base/sun.nio.ch.Net.bind(Net.java:565)at java.base/sun.nio.ch.Net.bind(Net.java:554)at java.base/sun.nio.ch.NioSocketImpl.bind(NioSocketImpl.java:636)at java.base/java.net.ServerSocket.bind(ServerSocket.java:391)at java.base/java.net.ServerSocket.<init>(ServerSocket.java:278)at java.base/java.net.ServerSocket.<init>(ServerSocket.java:171)at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:207)... 5 morecmd 에서 h2.bat 실행 시 이렇게 포트가 이미 사용중이라고 뜨는데요 포트 번호 바꿔서 사용해도 될까요? 8083 같은거로요!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
값을 안넘겨주면 똑같이 저도 에러가 나긴 하는데 왜 콘솔창에는 warn이 안뜰까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서는 warn이 뜨고 name이 없다라는 콘솔문구가 뜨는데 저는 창을 들어가보면 에러는 똑같이 나는데 warn이 안뜨네여..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
마지막 챕터 질문입니다.
홈 화면과 레이아웃14분에서 resource를 싱크로 나이즈 하는 장면이 나오는데 제화면에서 그버튼이 없는데 혹시 버전이 상승되서 없어진건가요?bootstrap.css 이 파일에서 Cannot resolve '--bs-icon-link-transform' custom property 이렇게 빨간 줄 뜨는데 어떻게 해야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
애플리케이션 아키텍처의 참조에 대한 궁금증
안녕하세요, 강의 잘 듣고 있습니다. 다름이 아니라 '애플리케이션 아키텍처' 강의를 듣다가 평소에 별 의식없이 해왔던 계층(컨트롤러, 서비스, 리포지토리)간 참조에 대해 궁금증이 생겨 질문드립니다. 일반적인 설계방식인 컨트롤러, 서비스, 리포지토리 계층으로 이어지는 아키텍처는 단방향으로 참조하는 것이 바람직한가요?컨트롤러 -> 서비스 -> 리포지토리 // 단방향으로만 참조하도록 해야하나요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
수업시간에 선생님께서 보시는 베어 정리본은 어디서 볼 수 있나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수업시간에 선생님께서 보시는 베어 정리본은 어디서 볼 수 있나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
플러그인을 찾을수 없다고 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]start.spring.io 에서 강의 와 다른 스프링부트 버전 3.2.3 으로 했고 packaging = jar ,java 버전 21 로 설정을 했습니다.인텔리 제이에서 실행 결과 id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4'두개의 플러그인을 찾을수 없다고 뜨는데 무슨 문제 일까요?
-
미해결스프링 시큐리티 OAuth2
granttype password
안녕하세요.password grant type 으로 인증서버를 구현하고 싶은데oauth2 authorization server 최신 버전인 1.1.5 에서는 deprecated 되어있어서 영상과 같이 0.3.1 버전으로 했는데 unsupported grant type 이라고 나옵니다.쓸 수 있는 방법이 있을까요? 다른 질문에서 답변으로 TokenEndpointConfigurer 에 있는 api 를 다루면 password 타입을 다룰 수 있다고 하신거같은데 맞을까요?!아니면 authorize_code 방식에서 로그인 페이지를 리다이렉트를 하지 않고 바로 처리할 수 있는 방법이 있을까요? 혹시 사내 서비스 여러개가 있을 때 로그인 기능만 빼서 로그인해주는 로그인 서버를 구축하려고 하는데 더 좋은 방법이있을까요? oauth2 방식 말구요!
-
미해결스프링 시큐리티 OAuth2
안녕하세요 강사님 질문 있습니다!
안녕하세요! 수업 강의 내용은 아니지만 연관이 있는 질문입니다! OAuth Client와 Resource server가 하나의 서버에 있어도 되나요?제가 토이 프로젝트를 구성하고 있습니다. 소셜 로그인 기능을 넣으려고 이것저것 설계하다 보니까 백엔드 서버에 OAuth2 Client와 Resource server 설정이 같이 있어야 하겠더라고요. Resource server 설정이 필요한 이유는, jwt 검증 때문입니다. 예를 들어 구글에서 발급받은 액세스 토큰을 프론트엔드로 반환해줄 거고, 프론트엔드(Nextjs)는 헤더에 access token과 함께 요청을 보내겠죠. 이때 백엔드 서버는 jwt 검증을 해야할 것입니다.수업에 이런 부분을 구두로 말씀하신 건 잘 모르겠는데, 저희 실습에서는 OAuth2 Client에서 Resource server로 요청해보는 건 있었지만 그 둘이 하나의 application.yml에 있는 실습을 하지 않았던 것 같아서요.chat gpt 유료 결제해서 쓰고 있어서 이 부분 가능하다고 답변을 듣긴 했는데 강사님이 맞다고 해주셔야 안심할 수 있을 것 같습니다. 만약..아니라고 하면 사실 많이 혼란스러울 것 같지만 간단한 가이드라도 부탁드려도 될까요..흐름이라도..문득 드는 생각은하나의 application.yml에 OAuth2 Client와 Resource 서버 설정을 다 넣는다OAuth2Client와 Resource 서버를 모듈을 분리한다. 이 경우에는 프론트에서 요청이 들어왔을 때 OAuth2 Client모듈이 Resource server 모듈에 자원을 요청한다(리소스 서버에서 검증까지) 둘 다 가능하다고 하면 지금 시간이 그리 여유있지 않아 1번으로 가고 싶긴 한데 이게 일반적인 방법인지 궁금합니다. p.s. 새로운 security 6 강의는 언제 올라오나요? 목이 빠졌습니다..ㅋㅋㅋ
-
미해결스프링 배치
예제소스가 전부 있는걸까요?
브런치가 몇개 중간에 비어있는거같은데 다른곳에서받는게있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderServiceTest에서 Rollback(false) annotation을 붙였을 때 에러가 나는 이유
[질문 내용]현재상황OrderServiceTest에서 상품주문()을 테스트 중입니다.테스트 중 에러가 나서 코드를 검토해보았는데,@Rollback(false) Annotation이 있었습니다.Rollback(false)자체가 테스트 결과에 직접적인 영향을 줄 수는 없다고 생각하여 무시했었습니다.그러나 Rollback(false) 어노테이션을 지웠더니 테스트가 정상적으로 작동하였습니다.궁금한 점구글링도 해보고, 강의도 다시 들어보았지만Rollback(false) 어노테이션이 상품주문 테스트 성공/실패에 어떠한 영향을 미치는지 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
Merge 관련해서 질문드립니다.
안녕하세요 영한님, 정말 좋은강의 잘 듣고있습니다. Merge관련해서 질문이 하나있는데요..! 아래 두 method 모두 시작할때 persistence context가 비어있고 찾는 entity가 db에 있다고 가정할때 비슷한 (혹은 같은) flow로 진행될까요? 여기서 method parameter, Entity e,는 업데이트될 (id가 set되어있고 field가 업데이트 되어있는)객체입니다. @Transactional public void updateEntity(Entity e){ Entity foundEntity = em.find(Entity.class, e.getid()); foundEntity.setFieldOne("New Data"); }@Transactional public void updateEntity(Entity e){ em.merge(e); }Merge를 꼭 써야하는건 아니지만, 그냥 동작 메커니즘이 궁금해서 질문드립니다. Merge를 쓰는게 Update전에 항상 Select query로 db에서 객체를 조회하기때문에 쓰기를 지양하라고 하시는건가요, 아니면 merge를 쓸때 또 다른 downside가 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
보통 쿼리가 같은게 2번 나가나요?
https://www.inflearn.com/questions/1206747/%EC%84%B9%EC%85%98-4-%ED%9A%8C%EC%9B%90-%EB%8F%84%EB%A9%94%EC%9D%B8-%EA%B0%9C%EB%B0%9C-%ED%9A%8C%EC%9B%90%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B0%9C%EB%B0%9C%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4이부분 답변으로 해결하고 실행하니까 create문이 2번 동일하게 나가는게 이게 맞나요? 평상시에는 한번 나간거 같은데 제가 기억이 왜곡된건지. 궁금해서 여쭤봅니다. 2.item레파지토리 클래스에서는 아래코드를 넣으면 em에서 빨간줄 나오는데 MemberServiceTest는 나오지 않습니다. 왜 그런건가요?// @Autowired // EntityManager em;
-
미해결스프링 배치
커서와 페이징
안녕하세요. 수업 관련 질의드립니다. 커서와 페이징 처리방식 전제:커서 기반 리더는 SQL을 한번 실행해 해당 커넥션을 이용해 스트림 처리를 하고, 페이징 기반 리더는 청크 단위로 SQL을 여러번 실행해 데이터를 페이징 단위로 처리합니다.문제: 그러면 커서기반으로 처리되는 리더는 doRead() 를 호출할 때, 데이터를 하나가져오고, 매핑하고, 다시 iterate해서 데이터를 하나 가져오고 매핑하는 것인가요? 아니면 일단 청크사이즈만큼 가져오고 그 다음 iterate해서 매핑을 하는 것인가요?질문이유: 저는 전자를 커서방식 후자를 페이징 방식이라고 생각하였는데, 수업 시간에 커서도 데이터를 청크사이즈만큼 가져온다음 Iterate한다고 이해하여 제 인식에 잘못된 것이 있는지, 파악에 오류가 있는지 질의드립니다.감사합니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
Security 단원에서 Dto와 인증 서비스 강의 관련입니다
loadUserByUsername 메서드에서 username 으로 조회잘되고 조회된 MemberDto는 log 출력도 잘되는데 다음 단계에서 "Encoded password does not look like BCrypt" 라는 warn 과 함꼐 "Failed to process authentication request" 로 자격증명에 실패했다고 합니다.DB의 패스워드는 암호화 되어 잘 저장된거 확인됩니다제가 무언가를 잘못 작성한건지파라미터로 보낸 password 는 어디서 encode해야 하는건지 아니면 다른 문제가 있는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceIntegrationTest 에서의 에러메세지
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]https://drive.google.com/file/d/1a7F2dfdI4MolHCpjYJRXUYxV1CsSjlsU/view?usp=sharing위와 같은 코드를 가지고 있었고, 아래와 같은 에러메세지가 나왔습니다. 어떻게 작업을 해야할 지 잘 모르겠어요 java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@46bb0bdf testClass = com.inflearn.hellospring.service.MemberServiceIntegrationTest, locations = [], classes = [com.inflearn.hellospring.HelloSpringApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], 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@23c30a20, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@67f639d3, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@82de64a, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@506ae4d4, org.springframework.boot.test.context.SpringBootTestAnnotation@8acbd854], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) 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:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)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 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1231) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:276) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215) at org.hibernate.boot.model.relational.Database.<init>(Database.java:45) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:191) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:388) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:364) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ... 38 moreCaused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:191) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentWithDefaults(JdbcEnvironmentInitiator.java:143) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:348) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ... 53 more
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다대다 관계에서의 연관계의 주인
@JoinColumn한 쪽이 연관관계의 주인이 되듯 다대다인 상황에서는 @JoinTable이 붙은 엔티티의 속성이 연관관계의 주인이 되는 것으로 이해했습니다. 이해한 것이 맞을까요?강의에서는 Category를 연관관계의 주인으로 설정하셨는데, 다대다 관계에서도 일대일 관계처럼 연관관계의 주인이 어느쪽이든 상관 없나요? JPA 기본편을 수강하고 와서 다대다를 피해야한다는 것을 알고 있지만 궁금증이 생겨 질문드립니다.