[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 이전에 동일한 질문을 주신 분들이 있었는데 답변이 잘 이해가 가지 않아 질문 드립니다. 영속성 컨텍스트에서 flush() 메소드를 직접 호출하면 DB에 바로 요청이 나간다고 강의에 나와있습니다. (DB 반영은 X) 이 부분 까지는 이해가 갑니다. 그런데 이전 강의에서 commit() 가 동작하면 flush() 가 동작한다고 했습니다. 그러면 결국 코드상에서 flush()가 2번 요청이 되어 쿼리가 2번 나가야 맞는거 같은데 이해가 안가서 질문드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] MemberJPARepository 클래스를 build/generated 패키지에 생성하고 테스트 클래스의 테스트를 돌리게 되면 @Autowired MemberJpaRepository memberJpaRepository; ^ symbol: class MemberJpaRepository location: class MemberJpaRepositoryTest 이렇게 주입 관련한 에러가 뜹니다. 왜 이런건가요?
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
안녕하세요. 한 몇달간 코틀린 공부하고 안드로이드 개발도 공부하고 나름 대로 스스로 잘만들었다는 앱도 만들었어요. 이번 새로 들어간 회사에서도 잘 만들었다고 하고 다들 잼있게 보더라구요.. 안드로이드와 연동해야되는 스프링도 공부하면 좋겠다 해서 스프링 공부중인데 코틀린으로 만든 스프링이 너무 없어요... 그냥 자료가 없어요 ... 코플링이 있긴하지만 그냥 자바를 코틀린으로 언어 컨버팅한것만 있구... 이게 자바강의인지 스프링 강의인지 .. 쩝 그래서 그런데 자바를 필수로 해야되나요?? 자바를 너무 싫어하는게 .. 옛날 첫 회사에서 자바 회사였는데 너무 힘들엇거든요. 직장 상사한테 쿠사리도 너무 많이 먹고, 그러다 결굴 그 회사 나오고 나서 자바 혐오가 생기더라구요.. 자바 언어만 봐도 그때 회사에서 혼난 기억이 10년이 지났는데도 짜증이 나요. C도 하고 mfc도 하고 C#도 하고 파스칼도 하고 새로 배운 코틀린도 하고 뭐 다 하겠는데 자바만큼은 진짜 싫어요 ... 어떻게 코틀린으로 스프링 고급 단계까지 올라 갈 수 있는 방법 없을까요??
[질문 내용] 제가 생각하는 양방향 연관관계를 사용하는 이유는 다음과 같습니다. 1) 조회 : team.getMembers().stream ... 근데 이러면 모든 Member 들이 DB에서 불러와지니까 만약 조회해야 할 대상이 많은 경우(members가 너무많아서 페이징 처리를 해야 하는 경우) 는 양방향 연관관계를 삭제하고 그냥 JpaRepository 에서 쿼리로 페이징 쿼리를 작성해야 한다. 2) CascadeType.all 혹은 orphanRemoval true 를 위한 매개체 1번, 2번 이외에는 쓸데없는 것 맞을까요?? 특히 강조한 부분의 제 생각이 맞는지 궁금합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강까지 내용을 모두 따라하고 실행하니 다음과 같은 오류가 뜹니다 j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] o.s.boot.SpringApplication : Application run failed yml 설정도 잘 하고 mySql 버전도 맞는데 왜 오류가 날까요? ㅜㅜ
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
실습 2 클래스 생성 3분 에아래 코드를 작성했는데 @MappedSuperclass Kotlin: Unresolved reference: MappedSuperclass 오류가 떠요 "persistence" 이것도 안보여요 import jakarta.persistence.MappedSuperclass build.gradle.kts 의존성은 아래처럼 되어 있어요 plugins { id("org.springframework.boot") version "3.2.3" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.22" kotlin("plugin.spring") version "1.9.22" } dependencies { implementation("org.springframework.boot:spring-boot-starter-thymeleaf") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.h2database:h2") runtimeOnly("com.mysql:mysql-connector-j") testImplementation("org.springframework.boot:spring-boot-starter-test") } 깃은 https://github.com/justkjy/portfolio-justkim 입니다. 왜 못찾는다고 할까요? 추가 왜 JPA 관련 에러가 계속 나는걸까요??
오늘 고민있어요부터 질문이 벌써 세 번째네요 ^^; 항상 친절히 답변주셔서 감사합니다. 강의에서 말씀하신 '생성 메서드'가 JPA 기본편의 '연관관계 편의 메서드' 같다는 생각이 듭니다. 물론 연관관계 편의 메서드처럼 하나의 메서드로 양방향 setter 역할을 해주는 건 아니지만, 좀 유사점이 있다고 보이는데 맞을까요?
전체 주문 가격을 조회하는 메서드(getTotalPrice)가 Order 클래스에 위치하고 있습니다. 그런데 주문 상품과 그 수량에 대한 정보는 OrderItem에 있습니다. 따라서 해당 엔티티에 전체 주문 가격을 조회하는 로직이 있어야 자연스러울 것 같은데 강의에서는 Order에 위치하고 있습니다. 전체 주문 가격을 조회하는 메서드가 둘 중 어디에 있어도 상관 없는건가요, 아니면 강의에서처럼 Order 클래스에 있어야만 하는데 제가 놓친 것이 있을까요?
이미 질문남기신 분들이 많기에 해당 코드들을 따라서 실행하려고 해 보았으나 스프링 시큐리티 버젼이 올라감에 따라 새롭게 코드를 작성을 해보기 위해 문서를 참고해서 수정을 했습니다만 접속을 하려고 보니 HTTP ERROR 403 에러가 뜨면서 localhost 접근이 막히더군요 혹시 고쳐야할 부분이 있을까요?
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가 존재하는지 확인하는 부분은 어떤 것을 확인하는 것인지 궁금합니다.
홈 화면과 레이아웃14분에서 resource를 싱크로 나이즈 하는 장면이 나오는데 제화면에서 그버튼이 없는데 혹시 버전이 상승되서 없어진건가요? bootstrap.css 이 파일에서 Cannot resolve '--bs-icon-link-transform' custom property 이렇게 빨간 줄 뜨는데 어떻게 해야 하나요?
안녕하세요! 현재 열심히 공부하고 있는 취준생입니다. 다름이 아니라 지금 복습을 하다가 연관관계의 주인 쪽이 좀 살짝 헷갈려서 질문을 남기게 되었습니다. 제가 이해한 바로는 다대일, 일대다 -> 다(N) 이 연관관계의 주인 , 연관관계의 주인만이 외래키를 등록, 수정 가능하다로 이해했습니다. 지금 제가 첨부한 2번째 사진을 보면 MEMBER 에 TEAM_ID 라는 외래키가 있고 MEMBER 가 다(N) 이기 때문에 연관관계의 주인이다. 여기까지는 완벽하게 이해를 했습니다. 근데 제가 지금 헷갈리는 포인트가 뭐냐면, 주인은 mappedBy 속성을 사용할 수 없다고 했습니다. 근데 mappedby 뜻 자체가 ~에 의해 되었다 니까 mappedby = "" 에 오는게 주인 아닌가요?? 결론적으로 제가 궁금한것은 3번째 사진에 @OneToMany(mappedby = "team") 이 부분인데, team 객체와 TEAM_ID 라는 외래키가 연관관계를 맺고 있어서 해준건가요?....ㅠㅜㅜㅜ 너무 헷갈리네요 ㅜㅜㅜㅜㅜ 지금 Member 클래스에 private Team team; 이라는 코드가 있는데, mappedby 뒤에 온 team 이 private Team team 이 team 인거 같은데 왜 mappedby = "team" 이렇게 된건가요?? 외래키와 연관관계를 맺고 있어서 그런건가요?
안녕하세요, 강의 잘 듣고 있습니다. 다름이 아니라 '애플리케이션 아키텍처' 강의를 듣다가 평소에 별 의식없이 해왔던 계층(컨트롤러, 서비스, 리포지토리)간 참조에 대해 궁금증이 생겨 질문드립니다. 일반적인 설계방식인 컨트롤러, 서비스, 리포지토리 계층으로 이어지는 아키텍처는 단방향으로 참조하는 것이 바람직한가요? 컨트롤러 -> 서비스 -> 리포지토리 // 단방향으로만 참조하도록 해야하나요
[질문 내용] 현재상황 OrderServiceTest에서 상품주문()을 테스트 중입니다. 테스트 중 에러가 나서 코드를 검토해보았는데, @Rollback(false) Annotation이 있었습니다. Rollback(false)자체가 테스트 결과에 직접적인 영향을 줄 수는 없다고 생각하여 무시했었습니다. 그러나 Rollback(false) 어노테이션을 지웠더니 테스트가 정상적으로 작동하였습니다. 궁금한 점 구글링도 해보고, 강의도 다시 들어보았지만 Rollback(false) 어노테이션이 상품주문 테스트 성공/실패에 어떠한 영향을 미치는지 궁금합니다.
강사님께서 짜주신 코드에서는 컨트롤러에서는 요청을 받는 DTO를 Domain까지 전파해서 활용하시던데, 보통 코드를 보면 컨트롤러에서 받은 Request Dto -> Domain으로 변환 후에 비즈니스 로직을 처리하는 코드도 많이 봤어서 어떻게 옳고 그른지 궁금합니다. 또한 Request Dto를 도메인에서 파라미터로 받아서 활용해도 되는지도 궁금하구요.
안녕하세요 영한님, 정말 좋은강의 잘 듣고있습니다. 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가 있나요?