inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

윈도우에서 cmd로 build시 오류

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음 gradlew.bat 명령어는 성공적으로 실행되었으나 gradlew build 명령어 입력시 오류가 납니다.. 찾아보니 자바의 버전이 다르다고 하는데 cmd에서 java -version해보면 11버전 나오구요 build.gradle에서도 11로 되어있습니다 그외 문제가 되는 사항 모두 사진으로도 첨부해놨듯이 버전 11로 되어있는데 어디서 오류가 나는걸까요 ..

  • java
  • spring
  • mvc
  • spring-boot
뿅뿅2 댓글 1 좋아요 0 조회수 1016

객체가 스스로의 리스트를 가지고, 양방향 매핑을 해도 될까요?

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 악! 스프링 웹 개발은 즐거워! 김영한 선생님 질문있습니다. 선생님의 두 로드맵을 거의 다 듣고 그를 바탕으로 포폴용 게시판을 만들어보고 있습니다. 와중 댓글과 대댓글 기능을 구현하는 과정에서 Comment라는 객체를 만들고 객체의 타입을 Comment와 reply로 나누었습니다. 특정 게시판에 관한 데이터를 불러올 때 댓글과 대댓글을 편리하게 불러오기 위해 타입이 Comment인 객체가 reply에 해당하는 객체를 리스트로 갖도록 설계했습니다. 이후 테스트를 진행해보았는데 fetch join을 통한 데이터 로드는 문제 없이 진행되었습니다. 다만 이러한 설계 방식이 올바른지에 대한 질문을 스스로 해결할 수 없어서 글 남깁니다. 아래는 코드와 테스트 코드 및 실행 결과이고, 마지막에 질문이 있습니다. package toy.board.domain.post; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import org.springframework.util.StringUtils; import toy.board.domain.BaseDeleteEntity; import toy.board.domain.user.Member; @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PROTECTED) @EqualsAndHashCode(callSuper = true) public class Comment extends BaseDeleteEntity { public static final int CONTENT_LENGTH = 1000; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "comment_id", nullable = false) private Long id; @Column(name = "content", nullable = false, length = CONTENT_LENGTH) private String content; @Column(name = "type", nullable = false, updatable = false) private CommentType type; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id", nullable = false, updatable = false) private Post post; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id", nullable = false, updatable = false) private Member member; @OneToMany(mappedBy = "parent") private List<Comment> replies = new ArrayList<>(); @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_comment_id", updatable = false) private Comment parent; /** * 양방향 관계인 Member와 Post에 대해 자동으로 양방향 매핑을 수행한다. */ public Comment( @NotNull final Post post, @NotNull final Member member, @NotNull final String content, @NotNull final CommentType type ) { this.post = post; this.member = member; this.content = content; this.type = type; } public boolean update(final String content) { if (!StringUtils.hasText(content)) { return false; } this.content = content; return true; } public void leaveReply(Comment reply) { if (areTypesCorrectThisAnd(reply)) { throw new IllegalArgumentException("주어진 댓글과 대댓글의 타입이 올바르지 않습니다."); } if (hasComment(reply)) { throw new IllegalArgumentException("대댓글이 이미 다른 댓글에 포섭되어 있습니다."); } if (isNew(reply)) { throw new IllegalArgumentException("댓글이 이미 해당 대댓글을 포함하고 있습니다."); } this.replies.add(reply); reply.parent = this; } private boolean isNew(Comment reply) { return this.replies.contains(reply); } private static boolean hasComment(Comment reply) { return reply.parent != null; } private boolean areTypesCorrectThisAnd(Comment reply) { return this.type != CommentType.COMMENT || reply.type != CommentType.REPLY; } } @Transactional @DisplayName("comment가 List<comment>를 갖고, fetch join으로 가져올 수 있는가?") @Test public void comment_has_comments_fetch_join() throws Exception { //given Member member = Member.builder( "member", new Login("password"), Profile.builder("nickname").build(), LoginType.LOCAL_LOGIN, UserRole.USER ).build(); em.persist(member); Post post = new Post(member, "title", "content"); em.persist(post); Comment comment = new Comment(post, member, "comment", CommentType.COMMENT); em.persist(comment); for (int i = 0; i < 5; i++) { Comment reply = new Comment(post, member, "reply" + String.valueOf(i), CommentType.REPLY); comment.leaveReply(reply); em.persist(reply); } em.flush(); em.clear(); //when QComment reply = new QComment("reply"); List<Comment> findComments = queryFactory .selectFrom(QComment.comment) .leftJoin(QComment.comment.replies, reply).fetchJoin() .where( QComment.comment.post.id.eq(post.getId()), QComment.comment.type.eq(CommentType.COMMENT) ) .fetch(); System.out.println("============================================="); for (Comment findComment : findComments) { System.out.println("findComment.getId() = " + findComment.getId()); System.out.println("findComment.getContent() = " + findComment.getContent()); } //then Comment findComment = findComments.get(0); for (Comment findReply : findComment.getReplies()) { System.out.println("findReply content = " + findReply.getContent()); } } [테스트 실행 시 create query] create table comment ( is_deleted boolean default false not null, type tinyint not null check (type between 0 and 1), comment_id bigint generated by default as identity, created_date timestamp(6), deleted_date timestamp(6), last_modified_date timestamp(6), member_id bigint not null, parent_comment_id bigint, post_id bigint not null, content varchar(1000) not null, created_by varchar(255), last_modified_by varchar(255), primary key (comment_id) ) [테스트 실행 결과] select c1_0.comment_id, c1_0.content, c1_0.created_by, c1_0.created_date, c1_0.deleted_date, c1_0.is_deleted, c1_0.last_modified_by, c1_0.last_modified_date, c1_0.member_id, c1_0.parent_comment_id, c1_0.post_id, r1_0.parent_comment_id, r1_0.comment_id, r1_0.content, r1_0.created_by, r1_0.created_date, r1_0.deleted_date, r1_0.is_deleted, r1_0.last_modified_by, r1_0.last_modified_date, r1_0.member_id, r1_0.post_id, r1_0.type, c1_0.type from comment c1_0 left join comment r1_0 on c1_0.comment_id=r1_0.parent_comment_id where c1_0.post_id=? and c1_0.type=? ===================== findComment.getId() = 1 findComment.getContent() = comment findReply content = reply0 findReply content = reply1 findReply content = reply2 findReply content = reply3 findReply content = reply4 [질문] 제가 궁금한 것을 자세히 말하자면, 테이블이 만들어질 때, comment 테이블의 특정 row(대댓글인 컬럼)가 해당 테이블의 다른 row(댓글인 row)의 PK값을 FK로 갖는데, 댓글에 해당하는 row는 객체가 생성되고 DB에 저장될 때 해당 컬럼에 null이 저장됩니다. 이는 Comment 객체의 ID에 @GenerateValue 설정을 주어서 그렇습니다. 위의 상황은 실무에서 사용할만큼 적절한가요? 아니라면 대안이 있을까요? jpa와 관련된 질문을 읽다보니, 다대일 관계에서 left join fetch의 경우 where문의 결과에 따라 데이터 일관성의 오류가 나타날 수 있다는 답변이 있었습니다.(해당 글: https://www.inflearn.com/questions/15876/fetch-join-%EC%8B%9C-%EB%B3%84%EC%B9%AD%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 ) 제가 작성한 테스트 코드의 쿼리문은 일대다 관계에서 일에 해당하는 엔티티에 별칭을 주어 where문을 적용한 것이므로 일관성의 문제가 발생하지 않는다고 생각했는데 이것이 옳은 생각인가요? 마지막으로 쿼리의 복잡도와 쿼리 개수는 trade off 관점에서, 특정 게시물에 관한 데이터를 반환해야 하는 api 요청이 들어왔을 때, 게시물과 댓글 엔티티가 단방향 관계일 경우 게시물에 관한 데이터와 댓글 및 대댓글에 관한 데이터를 각각의 저장소를 통해 가져오는 것이 좋을까요 혹은 쿼리가 다소 복잡해지더라도 한 번에 가져오는 것이 좋을까요? 아니면 단방향 관계를 양방향으로 만드는 것이 더 나은 선택일까요? 혼자 공부하니 올바른 방식을 찾는게 참으로 어려운 것 같습니다. 답변 기다리겠습니다. 감사합니다.

  • java
  • jpa
김민규 댓글 1 좋아요 0 조회수 389

Gradle - Groovy, Kotlin 고민

미해결

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

Spring initializr에서 현재 버전으로는 Gradle - Groovy와 Gradle - Kotlin 중 선택을 할 수 있게 되어 있는데요. 강의를 들을 때는 어떤 버전이든 상관이 없을까요? 아니면 Groovy를 선택하는 것이 나을까요?

  • java
  • spring
  • mvc
  • spring-boot
sana 댓글 1 좋아요 5 조회수 1598

eclipse버전이 달라 메뉴가 달라요.

미해결

윤재성의 만들면서 배우는 Spring MVC 5

8강 XML로 셋팅하기 듣고 있습니다. eclipse 2023년6월 버전으로 깔았는데요. Dinamic web Project 생성후 Conver to Maven Project를 하기 위해 오른쪽 버튼을 눌렀는데 Configure메뉴가 없어요. 사진 첨부합니다.

  • java
  • spring
  • mvc
  • xml
beautycc 댓글 2 좋아요 0 조회수 495

로그인 처리에서 세션과 관련하여 질문 있습니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

10만명의 사용자가 로그인하면 10만개의 세션이 생성된다고 하셨는데 서버에서 어떤 사용자의 세션인지 어떻게 판단해서 가져오는 건가요? 로그아웃 시 session.invalidate(); 로 세션 자체를 제거하는데 이 부분에서 서버가 로그인 한 사용자 중 어떤 사용자의 세션인지 어떻게 판단해서 제거하는 건지 궁금합니다.

  • spring
  • mvc
naryung92 댓글 1 좋아요 0 조회수 287

UserException

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

UserException을 따로 만들어서 설명해주시는 특별한 이유가 있나요??

  • spring
  • mvc
jung 댓글 1 좋아요 0 조회수 429

저도 회원조회에서 막히네요ㅠㅠ

미해결

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

잘되다가 등록 후 조회에서 막히네요ㅠㅠ 부탁드립니다...!! https://drive.google.com/drive/folders/1_dcicJUyawOjH4ZO4kd7Tq8REtaDwU6O?usp=drive_link

  • java
  • spring
  • mvc
  • spring-boot
gudtjr6398 댓글 1 좋아요 0 조회수 708

MySql 대신 오라클로 연동 시 오류

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 순수JDBC 강의 15분~16분 실행(등록) 시 오류 발생. (이름 입력 - 등록 - 에러발생) *DB에는 insert 되어있음 **페이지 에러명 : Whitelabel Error Page , (type=Internal Server Error, status=500). 영한님 강의에서는 id를 Long 타입으로 하시고 create table을 bigint로 하셨어요. 저는 오라클DB를 쓰기 때문에 Long 타입을 모두 int 타입으로 변환하였고, create table 또한 id필드를 number로 생성하였습니다. 회원가입(등록) 시, DB에 insert는 되나 에러가 뜨면서 콘솔창에 아래와 같은 오류가 뜹니다. java.sql.SQLException: 부적합한 열 유형: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor 오류발생 지점을 보면, @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getInt(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } member.setId(rs.getInt(1)); 위 행에서 오류가 발생하는 것으로 확인됩니다. DB에는 insert 되어있는데 무엇이 문제인지 모르겠습니다.

  • java
  • spring
  • mvc
  • spring-boot
TAEHYUN LEE 댓글 1 좋아요 0 조회수 860

static final vs static

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

강의자료를 보면 ItemRepository 클래스에는 private static final Map<Long, Item> store = new HashMap<>(); 이렇게 static final 로 설정하고 MemberRepository 클래스에는 private static Map<Long,Member> store = new HashMap<>(); final이 없는 static으로만 설정했는데 두 방식을 굳이 final 있고없게 설정한 이유가 따로 있을까요??

  • spring
  • mvc
코더 댓글 2 좋아요 0 조회수 349

h2 db 연결 후 spring boot 에러

해결됨

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

spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver package hello.hellospring; import hello.hellospring.repository.JdbcMemberRepository; import hello.hellospring.repository.MemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration public class SpringConfig { private final DataSource dataSource; public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService() { return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository() { // return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); } } h2 db에 잘 들어가지고, 코드도 강의 보면서 따라 작성하였는데 회원 목록을 들어가거나 회원 등록을 하려고 하면 웹 페이지가 에러 뜹니다 왜 이러는건가요?

  • java
  • spring
  • mvc
  • spring-boot
징니 댓글 1 좋아요 0 조회수 408

회원서비스 테스트 clearStore()관련 질문입니다

미해결

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

안녕하세요 회원 서비스 테스트 강의 듣다가 이해 안가는 부분이 있어서 질문드립니다 12:11 에서 MemoryMemberRepository memberRepository = new MemoryMemberReposiory(); 이 코드를 왜 작성해야하는지 이해가 안갑니다. clearStore()를 할거면 그냥 위에 적힌 memberService.memberRepository.clearStore(); 로 해도 같은 기능을 하는 코드가 아닌가요? 그리고 memberService.memberRepository를 사용하면 하나의 회원repository instance만 사용하므로 회원 서비스 코드를 public class MemberService{ private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository){ this.memberRepository = memberRepository; } } 위와 같이 작성하지 않아도 되는거 아닌지 궁금합니다

  • java
  • spring
  • mvc
  • spring-boot
한조 댓글 2 좋아요 0 조회수 507

좋아요나 조회수 등 동시성 처리 질문입니다.

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

사용자가 많지 않고 일반 커뮤니티 같은 경우에는 좋아요 개수가 많이 몰릴 일이 없다고 생각해서 PessimisticLock을 적용하려고 합니다. 제가 생각했을 땐 인스타나 그런 대규모 사이트의 좋아요는 PessimisticLock을 적용하면 성능 저하가 뚜렷하게 나타난다고 생각합니다. -> 레디스 사용이 베스트 토이프로젝트 규모의 SNS는 PessimisticLock으로 구현하는게 비용도 들지 않고 데이터 정합성이 보장된다고 판단했습니다. 혹시 제가 틀린 거나 더 나은 방법이 있을까요? 항상 감사합니다! 아 추가로 newFixedThreadPool은 왜 32로 설정하는지도 궁금합니다!!

  • java
  • spring
  • 동시성
진짜 잘하고싶다 댓글 1 좋아요 1 조회수 954

th:with 지역변수

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] th:with 를 이용해 지역변수를 선언할 때는 스코프 안에서만 동작하는데 한개의 스코프 안에서는 한개의 지역변수만 사용할 수 있나요 ? 아래처럼 2개의 값이 저장되있는 리스트를 받아서 2개의 지역변수를 사용하고 싶을 때는 어떻게 해야하나요 ? <div th:with="first=${users[0]}" th:with="second=${users[1]}"> <p>처음 사람의 이름은 <span th:text="${first.username}"></span></p> </div> <p>두번째 사람의 이름은 <span th:text="${second.username}"></span></p> </div> </body>

  • spring
  • mvc
심창우 댓글 1 좋아요 1 조회수 367

서블릿mvc, frontcontrollerv1 회원목록 조회시 오류가 납니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 서블릿과, JSP는 회원목록 조회시 잘 작동하지만 서블릿mvc, frontcontrollerv1 회원목록 조회시 whitelabel error와 함께 500에러가 뜹니다. 2023-08-25T15:26:44.301+09:00 ERROR 1989 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[.[mvcMemberListServlet] : Servlet.service() for servlet [mvcMemberListServlet] in context with path [] threw exception [java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.members_jsp] with root cause 처음에 /webapp/WEB-INF/views/members.jsp 에서 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 이 구문이 빨간색으로 오류가 떴었는데, build.gradle에 implementation group: 'javax.servlet', name: 'jstl', version: '1.2' 를 적용하니까 빨간색은 없어졌습니다. 그런데도 실행이 안되니까 답답하네요...소스코드는 강의 자료랑 비교해봐도 똑같습니다. 아무리 검색해봐도 해결방법이 나오질 않아서 질문 올립니다.

  • spring
  • mvc
rlawjddn103 댓글 4 좋아요 0 조회수 1111

제이쿼리 코드지만!

미해결

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]

form.append($('<input/>',{type : 'hidden', name : 'pageNum', value : '${criteria.pageNum}'})) 이거 해석좀 해주실수 있을 까요!!

  • spring
  • mvc
  • ajax
  • pojo
ariel123 댓글 1 좋아요 0 조회수 340

XML 방식에서 BoardDao의 modifyContentInfo

미해결

윤재성의 만들면서 배우는 Spring MVC 5

modifyContentInfo()메서드에서 selectOne()이 아니라 update()여야 되는거 아닌가요??....

  • java
  • spring
  • mvc
  • xml
rlaxotn1000 댓글 1 좋아요 0 조회수 402

WebServlet의 url 패턴 질문 있습니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 웹서블릿 url이 잘 이해가 안됩니다. 예를 들어, test.html 이라는 웹 페이지를 만들고 이 웹페이지에서 로직을 수행하기 위한 자바 코드를 생성한다면 @WebServlet(name="test", urlPatterns="/test.html");을 이용해서 동작을 수행한다고 이해했습니다. 이때, "/test.html"이라는 url은 언제 어디서 어떻게 만들어 지는건가요?? 제가 이해하기로는 아래와 같이 이해했는데 아닌거 같더라구요 1../test.html이라는 url 생성 2 test.html 웹 페이지 코드 생성 3.WebServlet을 통해 해당 웹페이지에서 동작 수행 그렇다면 강사님께서 강의에서 사용하시는 url은 어디서 어떻게 얻어오는 건가요? WebServlet의 url 패턴에 넣으면 자동으로 url을 생성하는 건가요? 설명 부탁드립니다

  • spring
  • mvc
blackhole124 댓글 2 좋아요 0 조회수 411

DataSource 구현체를 변경하는 일이 잦나요?

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요! 강의를 듣고 DataSource의 최대 장점이 추상화라고 이해했습니다. 사용하는 입장에서는 구현부에 의존하지 않아도 된다는 것인데요. 그런데 실무에서는 과연 DataSource 구현체를 갈아끼우는 일이 잦은지 궁금합니다. 여러 후보군들 사이에서 HikariCP와 같은 커넥션 풀이 압도적으로 우세하다면, 커넥션 개수와 같은 DataSource 설정을 변경하는 일은 있을 수 있어도 DataSource 구현체 자체를 변경하는 일은 적지 않을까 생각이 들어서요!

  • spring
  • mvc
  • spring-jdbc
  • datasource
woosung Choi 댓글 1 좋아요 0 조회수 444

~/test.mv.db 삭제 및 1.4.200 버전 재설치 후 실행 오류

미해결

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

최신 버전 설치 후에 강의노트를 나중에 보고 다시 설치했는데요. ~/ test.mv .db 삭제했는데도, 버전 재설치 이후에 데이터베이스 파일 생성이 안 됩니다 ㅠ 아이피가 문제인가 해서 localhost로 변경했는데도 안 되네요ㅠ 그런데 실행 시에 링크가 강사님꺼랑 다른 것 같은데 이게 문제일까요?? http://localhost:8082/index.do?jsessionid=016c01f762758d1f2da3477997f381a2&language=ko 강사님처럼 키가 안적혀있고 이런 링크로 연결되요..

  • java
  • spring
  • mvc
  • spring-boot
최선영 댓글 2 좋아요 0 조회수 843

create 함수의 매개변수 MemberForm 객체

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberContoller 의 create 함수는 MemberForm 객체를 매개변수로 받는데 MemberForm 객체 이외의 다른 객체를 사용할 수 있는 지 궁금합니다. MemberForm 클래스는 MemberContorller와 같은 controller에 존재하는가요? MemberForm 클래스는 name 이외의 다른 프로퍼티가 있더라도 정상 작동하는 것인가요? MemberForm 클래스에 name 프로퍼티가 존재하지 않는다면 데이터는 MemberFrom에 남지않고 사라지는 것인가요? Addattribute와 비슷하게 MemberForm에 name 프로퍼티가 추가되는 것인가요 create 함수에 들어오는 매개변수를 지정하지 않는 이유는 무엇인가요? 즉, 스프링이 객체도 생성해주고 setter를 통해서 프로퍼티에 값도 넣어줄 때 이전에 이 객체를 사용하겠다라고 명시하는 부분이 없는데 정상 동작하는 이유가 궁금합니다.

  • java
  • spring
  • mvc
  • spring-boot
nurugji 댓글 1 좋아요 0 조회수 487

인기 태그

인프런 TOP Writers

주간 인기글