inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

thymeleaf가 URI is not registered가 뜹니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

thymeleaf가 URI is not registered가 뜹니다 스프링부트 생성 때 의존성추가 했고 마켓플레이스에서는 thymeleaf를 검색해도 나오지 않는데 무엇을 잘못했을까요?ㅠㅠ 스프링은 2.4.3 자바 11입니다

  • java
  • spring
  • spring-boot
  • MVC
dydalsdl78 댓글 2 좋아요 0 조회수 796

Entity 에 메서드

미해결

스프링 기반 REST API 개발

안녕하세요. 궁금한 내용이 생겨서 질문 올립니다. Entity 란 DB의 테이블과 매핑되는 객체라고 알고 있는데, update()라는 메서드가 엔티티에 들어가도 괜찮은 건가요? Entity 의 필드 값을 변경시키는 것이므로 Dto 나 다른 곳에서 update 가 되어야 하지 않을까 하는 궁금증입니다.

  • rest-api
  • spring
  • java
장원익 댓글 3 좋아요 0 조회수 1193

공부를 하면서..

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

spring 핵심 원리에서 배웠던 DI, interface를 이용해서 추상화하는 방식이 사용되고 있지않고. 그냥 private final ItemService itemService 이런식으로 진행하고 계시는데 jpa 강의라서 이렇게 간단하게 설계 하시는건가요?? 실무에서 프로젝트 사이즈가 커지다보면 자연스레 추상화하게 되나요?? 질문 자체가 이상했으면 죄송합니다..

  • spring
  • spring-boot
  • java
  • JPA
  • 웹앱
탈룰라 댓글 1 좋아요 0 조회수 199

@repository에 관하여

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요 @Repository가 MemberRepository를 구현한 MemoryMemberRepository에 붙어있는데요 만약 MemberRepository를 구현한 DBMemberRepository라는 클래스가 하나 더있고 여기에도 @Repository가 붙어있다면 MemberService에서는 어떤 Repository를 주입시켜주나요? 읽어주셔서감사합니다.

  • java
  • MVC
  • spring
  • spring-boot
공부해보자 댓글 1 좋아요 1 조회수 294

Autowired순서

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요 강의를 듣던 중 궁금한점이 생겨 질문드리게되었습니다. MemberService에서 @Autowired 를 통해 MemberRepository를 주입시키는 과정에서 MemberRepository가 MemberService 보다 먼저 빈등록이 되어있다면 문제가 없겠지만 MemberRepository가 MemberService 보다 늦게 빈등록이 될경우 문제가 생길것 같은데 어떻게 작동하나요? 즉, 빈등록되는 순서가 궁금합니다. 읽어주셔서 감사합니다

  • spring-boot
  • MVC
  • spring
  • java
공부해보자 댓글 1 좋아요 0 조회수 261

스프링 커뮤니티

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

스프링 커뮤니티에 자주 올라오는 질문 이라고 하셨는데 따로 이용하시는 스프링 커뮤니티가 있나요?

  • java
  • JPA
jsungmin6 댓글 1 좋아요 1 조회수 216

안녕하세요 강사님

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요 강사님 질문있습니다. 강의 목록 중에 "실전! 스프링 웹 MVC 출시 예정 - 2월" 인 부분이 있는데 언제 나오는지 알 수 있을까요??

  • spring
  • spring-boot
  • java
  • MVC
댓글 1 좋아요 0 조회수 146

일반 조인과 fetch join 테스트를 해봤는데, 질문이 생겼습니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

복습을 하면서 예제 코드를 이리저리 건드려 보고 있습니다. 그런데 문득 이런 생각이 들었습니다. fetch 조인 대신 그냥 join문을 써서 같은 효과를 낼 수 있지 않을까? 그래서 예제 코드를 약간 수정해서 아래 코드를 돌려봤습니다. Team teamA = new Team(); teamA.setName("팀A"); em.persist(teamA); Team teamB = new Team(); teamB.setName("팀B"); em.persist(teamB); Member member1 = new Member(); member1.setUsername("회원1"); member1.setAge(10); member1.changeTeam(teamA); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setAge(15); member2.changeTeam(teamA); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setAge(15); member3.changeTeam(teamB); em.persist(member3); em.flush(); em.clear(); String query = "select m,t From Member m join m.team t"; List<Object[]> resultList = em.createQuery(query).getResultList(); for (Object[] o : resultList) { System.out.println(Arrays.toString(o)); } 그러면 다음과 같은 결과를 볼 수 있습니다. (아 참고로, Member와 Team 클래스에 toString을 미리 설정했습니다. 연관관계만 뺀 나머지 필드는 모두 출력합니다) fetch join을 안 썼지만, 한 방 쿼리가 날렸고, 같은 효과를 내는 걸 확인 했습니다. 이렇게 일반 join을 쓰면 되는데 어떤 차이 때문에 fetch join을 써야 되는 건가요? 아니면 제가 뭔가 놓친 게 있는 걸까요?

  • JPA
  • java
식빵 댓글 1 좋아요 8 조회수 463

왜 final 을 사용하면 안될까요!?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

@Entity에는 final 클래스를 필드에도 사용하지 말라고 하셨는데 이유가 뭔지 궁금합니다.

  • java
  • JPA
jsungmin6 댓글 1 좋아요 2 조회수 1117

다대일 양방향 질문입니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요. 다대일 양방향 관계에 대해 질문 드립니다. Member 엔티티와 Team 엔티티가 다대일 양방향 맵핑 되어있고, package hellojpa; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Member { @Id @GeneratedValue @Column(name= "MEMBER_ID") private Long id; private String name; private int age; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<Order>(); @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setTeam(Team team) { this.team = team; team.getMembers().add(this); } } package hellojpa; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany(mappedBy = "team",fetch = FetchType.LAZY) private List<Member> members = new ArrayList<>(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public List<Member> getMembers() { return members; } public void setName(String name) { this.name = name; } } 팀에서 getMembers 메소드를 통하여 해당 팀에 소속된 멤버들을 조회할 때 public class hellojpa { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); try { Member member =new Member(); member.setName("member1"); member.setAge(20); Team team = new Team(); team.setName("team a"); em.persist(team); member.setTeam(team); em.persist(member); Member member2 = new Member(); member2.setName("member222"); member2.setTeam(team); em.persist(member2); em.flush(); em.clear(); List<Member> memberList = em.find(Team.class, team.getId()).getMembers(); for (Member member1 : memberList) { System.out.println(member1.getName()); } } catch (Exception e) { transaction.rollback(); } finally { em.close(); } emf.close(); } } 저는 select member0_.MEMBER_ID members0_.TEAM_ID members0_.age members0_.name from Member members0_ where members0_.TEAM_ID=? 이러한 쿼리가 생성될 것으로 예상했습니다. 하지만 실제 쿼리가 나간것을 확인해보니 select members0_.TEAM_ID as team_id4_0_0_, members0_.MEMBER_ID as member_i1_0_0_, members0_.MEMBER_ID as member_i1_0_1_, members0_.age as age2_0_1_, members0_.name as name3_0_1_, members0_.TEAM_ID as team_id4_0_1_ from Member members0_ where members0_.TEAM_ID=? select문에서 특정 컬럼들이 중복되어 표시되는데(bold표시), 혹시 이렇게 표시되는게 정상적인 것인지 혹은 맵핑 과정에서 실수가 있었던지 궁금하여 질문 드립니다!

  • JPA
  • java
이민재 댓글 1 좋아요 2 조회수 484

양방향 연관관계일 때 한쪽을 끝는거에 대해 질문드립니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

@JsonIgnore 어노테이션을 사용하면 지금 상태로는 꼭 하이버네이트5모듈을 사용해야 하는거죠? 일단 지금은 그렇게 알고있으면 될까요? 감사합니다.

  • spring-boot
  • spring
  • JPA
  • java
twosom 댓글 1 좋아요 0 조회수 321

의문점 + 질문

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

(의문점) 단일참조가 아닐 경우 orphanRemoval을 사용하지 말아야 하는 이유에 대해서는 이해가 됩니다만.. 부모가 여럿이 있는 자식 객체가 있다고 했을 때, 하나의 부모가 없어진다해도 다른 부모쪽에는 참조가 되어있으니 아직 고아가 아닌 거 아닌가요?; 마치 아버지가 사망했다고 모자관계까지 끊어버리는 느낌..? 이상하네요; 너무 쓸 데 없이 Real World에 대입해서 생각하는걸까요? (질문) orphanRemoval = true를 사용한다는 게 결국 CascadeType.REMOVE와 똑같은 말 아닌가요? 그럼 CascadeType.ALL을 사용하면 굳이 orphanRemoval = true는 사용할 필요가 없는 것 아닌가 싶습니다. 자식의 생명주기를 부모가 관리하기 위해서 꼭 저 두 속성을 함께 써야하는 이유가 무엇인지 궁금합니다. 감사합니다.

  • JPA
  • java
akakakakak 댓글 1 좋아요 0 조회수 183

Q Class 생성 시 extends 상속 질문

미해결

실전! Querydsl

안녕하세요. Entity class에 extends DefualtEntity 를 할 경우 Q class 생서 시 DefualtEntity 의 값은 Q Class에 누락되는 현상이 있던데 상속을 해서 구성하면 안되는 걸까요? DefualtEntity 에는 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul") private LocalDateTime regDate; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul") private LocalDateTime udtDate; @PrePersist public void prePersist() { LocalDateTime now = LocalDateTime.now(); regDate = now; udtDate = now; } @PreUpdate public void preUpdate() { udtDate = LocalDateTime.now(); } 이런 공통적인 내용을 넣어보려합니다.

  • java
  • JPA
jaqp7363 댓글 2 좋아요 0 조회수 631

프록시 객체의 비교방법 질문

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 강사님, 질문 드리겠습니다. 일반 객체와 프록시 객체의 비교에 대해 정확하게 이해되지 않습니다. 처음에 소개하실 때는 항상 == 대신에 instanceof로 비교해야 정확한 결과를 얻을 수 있다고 하셨었는데요, 그 이후(26:50)에서 말씀하시는 내용을 보면 "==비교에 대해서 같은 영속성 컨텍스트 레벨 안에서는 항상 같다라고 나와야한다." 라고 하십니다. m1, reference 둘 다 getClass가 Member를 반환하고요. 두 상황에 어떤차이가 있길래 앞에선 ==을 사용하면 안 되고 뒤에선 ==이 가능한 것인지 이해가 안 되네요;; 첫번쨰 상황에서도 em.find, em.getReference을 한 후에 logic()으로 비교를 했으니 이떄도 같은 영속성 컨텍스트 레벨에 있는 것 아닌가요?

  • JPA
  • java
akakakakak 댓글 1 좋아요 2 조회수 292

Query DSL의 지연로딩

미해결

실전! Querydsl

안녕하세요 강의 너무 잘 듣고 있습니다 ㅎㅎ 듣다보니 궁금한게 생겼는데 --- Query DSL도 Entity Manager를 사용하는걸 보고 이런 생각이 들었습니다. ' 그러면 Query DSL도 지연 로딩이 가능한가? ' --- Entity Manger를 사용하는 JPA 같은 경우엔 영속성 컨텍스트를 사용하여 지연 로딩 사용이 가능한데 Query DSL도 사용 가능하다고 보는게 맞을까요? --- 실제로 Query DSL로 테스트를 했을 땐 Lazy 로딩으로 설정이 잡혀있어도 fetch join 처럼 다 조회해서 가져오긴하네용 ㅎㅎ --- 감사합니다.

  • JPA
  • java
댓글 1 좋아요 1 조회수 359

모든 주문리스트 조회하는 타임리프 올려봅니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

<!DOCTYPE HTML > < html xmlns: th ="http://www.thymeleaf.org" > < head th :replace ="fragments/header :: header" ></ head > < body > < div class ="container" > < div th :replace ="fragments/bodyHeader :: bodyHeader" ></ div > < div > < div > < form th :object ="${orderSearch}" class ="form-inline" > < div class ="form-group mb-2" > < input type ="text" th :field ="*{memberName}" class ="form- control" placeholder =" 회원명 " /> </ div > < div class ="form-group mx-sm-1 mb-2" > < select th :field ="*{orderStatus}" class ="form-control" > < option value ="" > 주문상태 </ option > < option th :each ="status : ${T(jpabook.jpashop.domain.OrderStatus).values()}" th :value ="${status}" th :text ="${status}" > option </ option > </ select > </ div > < button type ="submit" class ="btn btn-primary mb-2" > 검색 </ button > </ form > </ div > < table class ="table table-striped" > < thead > < tr > < th > # </ th > < th > 회원명 </ th > < th > 대표상품 이름 </ th > < th > 대표상품 주문가격 </ th > < th > 대표상품 주문수량 </ th > < th > 상태 </ th > < th > 일시 </ th > < th ></ th > </ tr > </ thead > < tbody > < span th :each ="item : ${orders}" > < tr th :each ="orderItem : ${item.orderItems}" > < td th :text ="${orderItem.item.id}" ></ td > < td th :text ="${item.member.name}" ></ td > < td th :text ="${orderItem.item.name}" ></ td > < td th :text ="${orderItem.orderPrice}" ></ td > < td th :text ="${orderItem.count}" ></ td > < td th :text ="${item.status}" ></ td > < td th :text ="${item.orderDate}" ></ td > < td > < a th :if ="${item.status.name() == 'ORDER'}" href ="#" th :href ="'javascript:cancel('+${orderItem.order.id}+')'" class ="btn btn-danger" > CANCEL </ a > </ td > </ tr > </ span > </ tbody > </ table > </ div > < div th :replace ="fragments/footer :: footer" ></ div > </ div > <!-- /container --> </ body > < script > function cancel ( id ) { var form = document . createElement ( "form" ); form . setAttribute ( "method" , "post" ); form . setAttribute ( "action" , "/orders/" + id + "/cancel" ); document . body . appendChild ( form ); form . submit (); } </ script > </ html > 구글 뒤져가면서 왜 이중 each를 쓰는데 인텔리제이가 빨간줄 긋지...싶었는데 tr을 두번으로 each하면 안되나봅니다. ㅠㅠ 바깥의 each를 span태그로 바꿔주니까 잘되는거같네요! 혹시나 막히시는 분들은 참고하셔요! 이거 만드는데 1시간넘게걸렸네요 .. ㅠㅠㅠㅠㅠㅠ

  • JPA
  • java
  • spring-boot
  • spring
twosom 댓글 1 좋아요 17 조회수 593

DTO 사용에대해 궁금합니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 영한님. 항상 좋은강의 보면서 이미 완강을 하였지만 궁금한점이 이 강의내용에 해당되는것 같아 질문을 남깁니다. 컨트롤러에서 (API) 개발을 할때 Entity를 바로 접근하지 말고 DTO를 권장하셔서 DTO를 사용하던 찰나에 문제가 생겼습니다. Entity에 Setter를 사용하는건 지양한다고 하셔서 생성자로 값을 넣어주고 있는데 DTO에서도 값을 생성자로 넣어줘야 하나요? 백을 먼저 개발하고 프론트를 개발하기위해 타임리프로 하고 있는데 DTO 를 생성자로 만들어 놓으니 값을 계속 못받아와서요. 한참 헤매다가 설마 하고 LOMBOK @Setter 로 하니 값이 넘어오더라고요. DTO는 Setter로 하여도 문제가 없을까요? 제 생각에도 DTO는 단순 값을 전달 받는 Form(?)이라고 생각되어 Entity에서의 Setter를 지양해야하는 문제에 와는 달리 큰 영향은 없을 것 같아서요. 감사합니다.!

  • spring
  • JPA
  • java
  • spring-boot
  • 웹앱
KwangMin Lee 댓글 2 좋아요 4 조회수 3629

BooleanBuilder와 BooleanExpression의 차이점이 궁금합니다.

미해결

실전! Querydsl

안녕하세요. 강사님. 강의를 보는 도중 궁금한 점이 생겨 문의글 남깁니다. where 다중 조건을 사용하면 좋은 점이 메소드를 사용할 수 있어 재사용이 용이하다고 하셨는데요, BooleanBuilder를 메소드로 빼서 사용하는 것과의 차이점이 궁금합니다.

  • java
  • JPA
jooh21020 댓글 1 좋아요 0 조회수 514

API 설계시 게시글과 댓글

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요 강사님. http, 스프링, jpa 모두 강사님 수업을 듣고 인생 첫 스프링 프로젝트로 게시판 API를 구현 해 보려고 하는 대학생입니다. 그래서 현재 아래와 같이 요청경로와 요청법, 응답 본문, 에러응답 등을 문서화 하고 있습니다. 경로를 올바르게 설계했는지는 잘 모르겠지만, 게시글 정보 반환시 게시글과 댓글관계에 대해 궁금해서 질문 드립니다. GET /boards/{board-id}/posts/{post-id} 으로 요청시 게시글의 작성자id, 제목, 내용등이 반환되는데, 댓글들의 목록도 포함시킬지 고민입니다. 보통 게시글이 댓글을 가지고 있으니깐 처음에는 댓글 요청경로를 빼고 게시글 요청에 당연히 포함시켜야 하지 않나? 생각을 했습니다. 그런데 댓글에 페이징 기능까지 넣으려고 생각하니깐 게시글과 댓글을 분리해서 게시글정보와 댓글 정보를 각각 받아오도록 하는게 좋을 것 같다는 생각이 들었는데, 혹시 현업에서도 댓글과 게시글은 분리해서 각각 따로 가져오게 설계를 하는지 궁금합니다. 추가적으로, 이건 강사님의 HTTP수업과 관련된 질문이긴한데 게시글,유저 등록같은 POST /boards/{id}/posts 의 201 응답 Location 헤더에 생성된 자원의 주소(예를들어 http://localhost:8080/boards/1/posts/1)가 어차피 포함되어 오는데, 응답 본문에 생성된 자원(게시글)을 다시 보내주는게 RESTful API에 더 가까운가요? 생각해보면 생성된 자원의 위치를 어차피 알려주는데 의미없는 오버헤드인 것 같더라구요.

  • spring-boot
  • java
  • JPA
  • spring
우럭아왜우럭 댓글 1 좋아요 0 조회수 3174

abstract

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 강사님, 질문 드리겠습니다. 세 가지 방법 모두 부모를 abstract로 생성해야 하나요? 조인 전략은 Item이 따로 존재하면서 조인을 통회 조회하는 것이니 abstract이 아니어야 하는 게 맞나 싶기도 해서요;;

  • java
  • JPA
akakakakak 댓글 1 좋아요 1 조회수 248

인기 태그

인프런 TOP Writers

주간 인기글