묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA createQuery
JPA 강의를 들으면서 문제 없이 잘 진행됩니다.문제가 되는건 아니지만 Member 에서 error messages 처럼 붉은줄이 나타납니다.그리고 where 다음 m 에서 m. 을 확인해보면 id, name 나타나지 않습니다.어떠한 현상으로 안 나타나는지 잘 모르겠습니다.하지만 이대로 실행해보면 잘 실행되고 Test 도 error 없이 잘 진행됩니다. 계속 원인을 찾아보겠습니다.혹시라도 알고 계시다면 댓글 부탁드립니다. 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
repository 작성 시 , spring-data-jpa 의 jpaRepository 와 persistence manager 객체 주입의 선택 기준
질문 : 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 안녕하세요. 선생님 이번 강의에 spring-data-jpa 의 jpa repository 를 사용하지 않고 EntityManager 를 주입받아 repository 를 사용 하는 이유는 학습의 목표가 jpa 의 동작을 더 잘 이해하기 위함이라고 들엇습니다.( 출처 : https://www.inflearn.com/questions/549972)그러면 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 하나의 트랜잭션의 명령을 길게 여러개 쓰고 싶으면 jpa repository 의 함수를 직접 작성한다라고 이해해도 될까요 ?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA 테스트하는 과정에서 질문드립니다!
JPA 강의 17:36에서 콘솔 창에 values 값으로 null 이 들어가게 되는데, 제 출력 화면에는default 값이 나옵니다.문제 없는 결과일까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
json column type 문의
실 사용중에 질문이 있어서 문의드립니다.db column 타입이 json으로된 컬럼의 경우 querydsl 사용시에 해당컬럼을 where절에 사용하는방법이 없을까요?.like , .eq 기능을 사용하고 싶은데 잘안되네요
-
해결됨실전! 스프링 데이터 JPA
페이징 했을때 발생하는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세여 영한님 강의 너무 잘 보고있습니다.다름이 아니라 JPA 관련 강의를 모두 듣고 사이드 프로젝트에JPA를 적용하던 중에 문제가 발생하여 질문드립니다.문제 상황현재 Issue 라는 엔티티가 member와 milestone이라는 엔티티와 @ManyToOne 관계를 맺고 있는 와중에 Issue의 상태에 따라 Issue를 조회 하는 로직을 만들고 있었습니다.문제 코드@Query(value = "select i from Issue i left join fetch i.member m left join fetch i.milestone mi where i.status = :status") Page<Issue> findIssues(Pageable pageable, @Param("status") IssueStatus status);위에 코드가 상태에 따라 Issue를 조회 하는 코드인데, 우선 N+1 문제를 해결하기 위해 left join fetch 를 사용하고 Issue의 상태에 따른 조회를 위해 where 문을 사용하였습니다. 작성한 코드가 크게 문제가 있다 생각하지 않았는데 막상 실행을 해보니 query specified join fetching, but the owner of the fetched association was not present in the select list 라는 문구의 예외가 발생하였습니다.다행히 구글에 검색하여https://stackoverflow.com/questions/12459779/query-specified-join-fetching-but-the-owner-of-the-fetched-association-was-not해당 글을 보고 따로 count query를 작성하여 해결을 하긴 했는데, 왜 여기서 따로 count query를 작성해야 하는지 의문이 들었습니다. 페이징을 하면 count query를 알아서 날려주는 것으로 생각했는데 여기서는 왜 그렇게 동작하지 않는걸까요??해결 코드@Query(value = "select i from Issue i left join fetch i.member m left join fetch i.milestone mi where i.status = :status", countQuery = "select count(i) from Issue i left join i.member left join i.milestone where i.status = :status") Page<Issue> findIssues(Pageable pageable, @Param("status") IssueStatus status);
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.find()와 영속성 컨텍스트 관련 질문
안녕하세요!em.find()와 영속성 컨텍스트 관련해서 학습테스트를 작성하던 도중 의문이 생겨 질문을 남깁니다.em.find() 작업은 1차 캐시에 데이터가 존재한다면 영속성컨텍스트의 데이터를 반환하고, 1차 캐시에 데이터가 존재하지 않을 경우 DB에 select 쿼리문을 보내는 것으로 알고 있습니다. 위 선행지식을 바탕으로, 아래의 학습테스트 경우처럼 1차 캐시가 비어있고 DB에 데이터가 있는 경우에서 delete 메서드를 호출하고 EntityManager를 flush()하지 않은 상태로 테스트하여 delete 쿼리문을 DB에 보내지 않고 쓰기지연 저장소에 남겨둔 상태를 테스트해보도록 했습니다.(여기서 delete는 Spring Data JPA의 delete문입니다! 이 delete 메서드에선 해당 JpaRepository의 구현체를 타겟 프록시로 하는 SimpleJpaRepository에서 em.find() 작업 후 em.remove() 작업을 해주는 것으로 알고 있습니다.)학습 테스트 @Test @DisplayName("1차 캐시가 비어있고 쓰기지연 저장소에 delete 쿼리가 있는 상태에서 em.find()를 할 경우 결과를 확인한다") void test7() { // 영속성 컨텍스트, DB에 모두 member 저장 (IDENTITY 전략) final Member member = new Member("kth990303", "kth990303@naepyeon.com", Platform.KAKAO, "1"); final Long memberId = memberRepository.save(member) .getId(); // 영속성 컨텍스트는 비워줌 em.flush(); em.clear(); System.out.println("==========================="); // delete 쿼리는 쓰기지연저장소에 존재하고 아직 sql로 찌르지는 않음 memberRepository.delete(member); System.out.println("============================================="); // 1차캐시에 Member는 존재하지 않으므로 select 쿼리가 이 때 나갈 줄 알았으나 안나감. em.find(Member.class, memberId); em.flush(); em.clear(); }저는 위 테스트에 대한 결과 예측을 아래와 같이 했습니다.insert문을 DB에 날린다이후 em.clear()로 영속성 컨텍스트를 비워주어 1차 캐시에는 데이터 존재 X======delete 메서드 호출한다. 1차 캐시에 데이터가 존재하지 않아 select 쿼리문 후 delete 쿼리문을 날려야 함. (SimpleJpaRepository) 이 쿼리문들은 쓰기지연 저장소에 저장돼서 아직 날라가지 않음.=======em.find()를 호출하고, 1차 캐시에 데이터가 존재하지 않아 select 쿼리문이 쓰기지연저장소에 쌓임.em.flush()를 해주어 쓰기지연저장소에 있던 select, delete, select가 나갈 것이라 예측.결과적으로 insert -> ==== -> ===== -> select, delete, select 가 나갈 것이라 생각했습니다.하지만 실제 쿼리는 아래와 같았습니다.실제로는 위와 같이 insert -> ==== -> select -> ===== -> delete 만 나가게 됐습니다.이에 대한 이유가 궁금합니다!감사합니다. 참고1. SimpleJpaRepository의 delete 메서드@Override @Transactional @SuppressWarnings("unchecked") public void delete(T entity) { Assert.notNull(entity, "Entity must not be null!"); if (entityInformation.isNew(entity)) { return; } Class<?> type = ProxyUtils.getUserClass(entity); T existing = (T) em.find(type, entityInformation.getId(entity)); // if the entity to be deleted doesn't exist, delete is a NOOP if (existing == null) { return; } em.remove(em.contains(entity) ? entity : em.merge(entity)); }참고2. 해당 질문에 대한 상황을 정리한 노션https://clean-nutria-44b.notion.site/JPA-em-find-1-34fa1ba3df914e24ba9dd9a143f28c8c
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
html에서 form 데이터를 받는 것에 대한 질문입니다.
html에서 form 데이터를 받는 것에 대한 질문입니다.html form 에서 보내는 데이터를 Controller에서 ModelForm으로 받고 있는데여기에 대한 질문입니다.저 ModelForm으로 값을 받을수 있는 이유가 form태그 안에 name값을 넣어준 input태그들과 매칭되어서 값을 받아 올수 있는건가요?아니면 form 태그에 명시한 th:object에 의해서 memberForm형태로 넘길 수 있는건가요?
-
해결됨실전! Querydsl
세타조인 관련된 질문입니다.
항상 강의 잘듣고 있습니다.회원의 이름과 팀 이름이 같은 회원을 조회하라는 예제를 듣고 조인 없이 직관적으로 다음과 같은 쿼리를 생각하였는데요.테스트시 빈 결과값이 반환되는것으로 추측됩니다. @Test void theta_join() { em.persist(new Member("teamA")); em.persist(new Member("teamB")); em.persist(new Member("teamC")); List<Member> result = queryFactory .select(member) .from(member) .where(member.username.eq(member.team.name)) .fetch(); System.out.println("result = " + result); // => result = [] assertThat(result).extracting("username").containsExactly("teamA","teamB"); } //----------console log---------- Expecting actual: [] to contain exactly (and in same order): ["teamA", "teamB"] but could not find the following elements: ["teamA", "teamB"] //----------------------------------- 혹시나.. Fetch타입이 LAZY로 되어있어서 그런가 싶어서EAGER로 바꿔봤는데도, 결과가 나오지 않습니다..... 그렇다면...이 쿼리는 왜 작동하지 않는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
컬렉션 탐색
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용](멤버와 팀이 다대일 관계)"select t.members From Team t"t.members가 Member 객체가 아니라 Member컬렉션 자체라서 탐색이 허용안된다고 하셨는데요. 영한님께서 size 메서드를 쓰시는걸 보고 의문이 생겼습니다. 앞서 경로 표현식에서는 객체 탐색이 상태 필드, 단일값 연관필드, 컬렉션 값 연관필드만 허용이 된다고 하셨는데 size()는 왜 허용이 되는건가요? size가 허용되면 t.members.get(...)이런 식으로 컬렉션 메서드도 사용가능한거 아닌가요? 감사합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
maven 오류
/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=60512:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/jeong-yeongmin/Downloads/study/JPA/jpa-basic/target/classes:/Users/jeong-yeongmin/.m2/repository/org/hibernate/hibernate-entitymanager/5.3.10.Final/hibernate-entitymanager-5.3.10.Final.jar:/Users/jeong-yeongmin/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar:/Users/jeong-yeongmin/.m2/repository/org/hibernate/hibernate-core/5.3.10.Final/hibernate-core-5.3.10.Final.jar:/Users/jeong-yeongmin/.m2/repository/org/javassist/javassist/3.23.2-GA/javassist-3.23.2-GA.jar:/Users/jeong-yeongmin/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/jeong-yeongmin/.m2/repository/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final.jar:/Users/jeong-yeongmin/.m2/repository/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar:/Users/jeong-yeongmin/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar:/Users/jeong-yeongmin/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar:/Users/jeong-yeongmin/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final.jar:/Users/jeong-yeongmin/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar:/Users/jeong-yeongmin/.m2/repository/net/bytebuddy/byte-buddy/1.9.5/byte-buddy-1.9.5.jar:/Users/jeong-yeongmin/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar:/Users/jeong-yeongmin/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar hellojpa.JpaMain 10월 09, 2022 4:58:00 오전 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...] 10월 09, 2022 4:58:00 오전 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.3.10.Final} 10월 09, 2022 4:58:00 오전 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43) at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:86) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:212) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:174) at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:76) at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:171) at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:119) at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:61) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:50) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:10) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 12 more Process finished with exit code 1안녕하세요. 원래 gradle을 사용하다가 강의를 보면서 maven을 사용중인데 원래 설치했던 환경이 달라 그런지 계속 오류가 뜹니다. pom.xml도 아예 초기 세팅이 <properties>까지 포함하게끔 나와서 디폴트로 주는 거는 그냥 두고 강의 코드를 복사 붙여넣기 했는데 어떤식으로 바꿔야 되는지 모르겠습니다. 아래는 pom.xml코드입니다.<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>jpa-basic</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.3.10.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency> </dependencies> </project>
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
혹시 영한선생님께 1:1 질문이나 비밀 질문 같은 것은 할 수 없나요 ??
공개된 커뮤니티 말고 질문할 수 있는 방법은 없나요 ? 영한 선생님께 1:1로 직접 질문하고 싶은 내용이 있어서요
-
해결됨실전! Querydsl
QueryDSL 사용 시 order by case 구문 질문 드립니다!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 혼자 프로젝트를 만들다가 특정 Type 별로 정렬을 수행해야 하는 경우가 생겨 검색하다 QueryDSL을 이용하여 orderBy Case 구문을 사용하는 방법이 궁금하여 질문을 남기게 되었습니다.정확하게는 OneToMany 관계인 경우, Many 쪽의 요소를 정렬하고자 할 때의 방법을 잘 모르겠어서 질문드려요!Store < === > Menu위의 두 엔티티가 OneToMany 관계로 연관되어 있고, 매장 상세 정보에서 메뉴를 출력하는 경우, Menu의 Type 필드( MAIN, DESSERT, DRINK, BEVERAGE)를 기준으로 orderBy를 수행하려고 합니다.현재 제가 구현한 방식은< 특정 매장에 속한 메뉴 조회하는 로직 >< 매장의 정보를 조회하는 코드 >매장을 조회하는 로직에서 한 번에 처리하려고 하니 방법이 생각나지 않아 두 쿼리를 분리하여 메뉴는 위의 코드에서 조회하고, 아래에서는 매장의 나머지 정보만 불러오는 형식으로 구현돼있습니다.또한 매장 정보 조회 시, DTO에선 순수 매장 정보만을 불러오는 형식이라 메뉴를 조회하는 쿼리가 중복으로 나가진 않습니다!연관 관계에 놓여 있는 엔티티를 별도의 조회 쿼리를 작성하여 불러오는 것이 이런 경우 맞는 방법인지 아니면 제가 아직 부족하여 놓친 하나로 합쳐서 조회할 수 있는 좋은 방법이 있는지 궁금합니다!!긴 글 읽어주셔서 감사합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
외래키가 "다" 쪽에 있어야 하는 이유에 대한 이해가 부족합니다.
영한님께서 일대다[1:N]강의에서 1:40 ~ 1:50초 사이에 DB설계관점에서 보면 외래키가 다쪽에외래키가 들어가는것이 좋으며, team쪽에 memberId가 있으면 team을 계속 insert해야하며,team이 중복이 되어 1이 아닌 N이 된다고 하셨는데 이 부분들이 이해하기가 어려웠습니다.외래키가 "다"쪽에 있으면 좋은 이유들과 이 부분들의 이해가 부족할 때 어떤 것들을 공부하면 좋을것 같을지도 알려주시면 감사하겠습니다.영한님의 좋은 강의 덕분에 처음 듣는 내용들인데도, 이해가 잘돼서 너무 좋네요. 좋은 강의 감사합니다
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Dto의 위치
엔티티를 조회해서 dto로 변환할 시에 강사님은 controller에 내부 클래스 방식을 이용하셨습니다. 그 이유가 어차피 dto가 화면에 의존적이기 때문에 controller에 내부클래스 방식으로 하신건지아니면원래는 따로 dto페키지를 만들어서 사용하는 게 맞으나 수업을 위해서 그러신건지 궁금합니다.결론적으로는 dto의 위치를 어떻게 가져가는 것이 맞는 지 궁금합니다.controller의 내부 클래스dto페키지생성repository그 외4가지 중 어디에 두어야 할 지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@Data의 역할
왜 Dto에 @Data가 빠지면이런 오류가 나는 지 궁금합니다.강의에서는 getter가 없어서 오류가 났다고 배웠습니다.property가 없다고 오류가 난다고 배웠는데 왜 getter가 있어야 하는 지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
동일한 트랜잭션 의미
동일한 트랜잭션에서 조회한 엔티티는 같음을 보장 이뜻에서 동일한 트랜잭션은 한명의 유저가 특정 컴퓨터로 보낸 모든 요청을 동일한 트랜잭션이라고 보나요? 아니면 한명의 유저가 보낸 한번의 요청내에서만을 동일한 트랜잭션이라고 보나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem 생성메서드
Order 생성 메서드의 매개변수 값으로 Member, Delivery,OrderItem list가 들어갔습니다.OrderItem 생성메서드에는 매개변수로 Item, orderPrice,count가 들어갔는데 OrderItem 클래스에 Order도 변수로 가지므로 생성메서드 매개변수로 Order도 들어가야 하는것이 아닌가요?? 감사합니다.
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
API 요청시 인증에 대한 질문
인사안녕하세요.일단 강의에 감사한 마음에 그랜절 바치고 질문 시작하겠습니다🙇🙇 호돌킹 강의 들으며 한명의 더 열심히 하는 수강민수가 되기 위해 요즘 공부중인 코틀린으로 토이 프로젝트를 해보며 본 강의를 듣고 있습니다. 덕분에 강의 한 강의 들을때마다 오래 걸리기는 하지만 많은 공부가 되고 있습니다. 궁금하진 않으시겠지만 혹시 질문에 답변을 주시는데 필요할 까 싶어 링크도 남겨 봅니다https://github.com/QUIDEV/quidev 질문질문 내용은 다름이 아니라.. 제가 프로젝트에서 스프링 시큐리티를 적용 해 두었는데요, 이번 강의부터 API 요청을 vue.js 에서 보내다 보니 인증부분이 발목을 잡네요.지금까지는 항상 코드를 짤 때 프론트 부분은 템플릿 엔진을 썼었고, vue.js 를 사용 하더라도 라이브러리처럼 사용했던터라 굉장히 당황스러운 상황입니다. 당장의 강의를 마치기 위해 시큐리티를 걷어내고, 작성자를 기록하기 위해 비즈니스 로직에도 파고들어간 부분을 걷어낼 수는 있겠지만 어차피 언젠가는 마주쳤을 문제라고 생각해서 이번기회에 물리쳐 보려고 합니다. Vue.js 와 스프링 시큐리티 검색어로 이것 저것 찾아 본 결과 대세가 JWT 로 굳어지는 것 같은데 JWT를 공부해서 적용 시키면 될까요? 아니면 호돌맨은 다른 방법을 권장하실까요? 귀찮으시겠지만 선생님의 고견을 여쭙습니다. 조공으로 미리 5성 수강평도 남겼습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실제로 실무에서도 컨트롤러에서 레포지토리를 호출하기도 하나요?
보통 저렇게 계층형으로 나누면 컨트롤러는 서비스만 호출하고 서비스에서 레포지토리를 호출하는 식으로 하는 줄 알았는데 실무에서도 컨트롤러에서 바로 간단한 레포지토리를 호출하는 경우가 자주 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
생성자와 setter
강사님 말씀대로 수정할 부분만 get/set기능이 잇는 dto를 만들어서 이용해봤습니다.강사님이 계속 controller같은 곳에서는 setter의 이용을 제한하시라고 설명을 하셔서저는 생성자를 만들어서 처리를 하였습니다.근데 이부분에서차라리 정정펙토리메서드를 이용해야하나 궁금증이 들었습니다.제가 정적펙토리메서드를 질문란에서 공부한 결과로는 상속관계가 아니면 정적펙토리메서드를 사용하는 것이 장점이 많은 것으로 공부를 하였는데요제가 한 코드처럼 이곳에 정적펙토리메서드를 적용하는 것이 괜찮은 방법인지 궁금합니다.만약에 이 방법이 괜찮다면앞으로 항상 수정코드시에 updateDto를 만들때는 정적펙토리메서드를 이용하여 수정해도 되나요??