묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
생성자를 만들고 getvalue 메서드는 왜만드는건가요 ??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의안에서 생성자를 만들고 getvalue 메서드는 왜만드는건가요 ??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
5~6강 질문이요
post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..
-
미해결이펙티브 자바 완벽 공략 1부
정적팩토리메소드와 ServiceLoader는 무슨 관계인가요?
ServiceLoader는 정적팩토리메소드를 사용하든 안하든 모든 구현체를 가져오는데 정적팩토리메소드 장점에서 나오는 이유를 잘모르겠습니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
thymeleaf 등과 같은 view와 프론트에서 그리는 화면의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]https://www.inflearn.com/questions/72824 질문을 읽어보았습니다.서버사이드 렌더링과 클라이언트 사이드 렌더링이 있고, 강의 예제에서 썼던 thymeleaf 같은 방법은 서버사이드 렌더링이라고 이해했습니다.그리고 실무에서는 서버사이드와 클라이언트 사이드를 둘 다 사용한다고 하셨는데, 둘 다 사용한다는 말의 의미가 1. 동일한 화면에 대해 서버사이드와 클라이언트 사이드가 공존한다는 건가요?만약 맞다면, 2. 실제 사용자가 보는 화면은 둘 중 어떤 걸로 선택되나요?그리고 3. 서버사이드 렌더링을 사용하는 이유와 용도가 궁금합니다. 저 혼자서 데이터를 대강 화면에 뿌려보면서 백엔드 개발이 잘 되었는지를 확인하는 용도로 쓰는건가? 라는 생각을 했어서... 정확히 실무에서 어떤 용도로 쓰는건지 궁금합니다.질문이 너무 많아서 죄송합니다ㅠㅠ 상세한 답변이 어려우시다면 참고할만한 레퍼런스나 검색 키워드를 추천해주셔도 좋습니다.
-
미해결김영한의 실전 자바 - 기본편
생성자 - 오버로딩과 this()
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]this를 사용해서 생성자 중복을 없앤다고 그러셨는데 궁금한점이애를들어 print(첫번쨰 생성자)print(두번쨰생성자)print(세번째 생성자)첫번쨰 생성자 안에 this(name,age,50) 이렇게 사용했다고 하면 두번쨰,세번쨰 생성자중 어떤걸 이용해서 하는건가요? 아니면 양식이 같은걸 알아서 찾아서 그 생성자를 사용하는걸까요? 구체적으로 자세히 설명해주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Book을 Setter를 열어둬서 dto정보를 받지 않고 빌더 패턴을 사용해서 다음과 같이 구현해보았습니다
상속 받은 엔티티는 @Builder를 사용하는게 아니라, 다음과 같이 @SuperBuilder로 자식, 부모 엔티티 모두에 선언해줘야 한다고 합니다.<Book 엔티티>package jpabook.jpashop.domain.item; import jakarta.persistence.DiscriminatorValue; import jakarta.persistence.Entity; import lombok.*; import lombok.experimental.SuperBuilder; @Entity @DiscriminatorValue("B") @Getter @SuperBuilder @AllArgsConstructor @NoArgsConstructor public class Book extends Item { private String isbn; private String author; }<Item 엔티티>package jpabook.jpashop.domain.item; import jakarta.persistence.*; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.experimental.SuperBuilder; import java.util.ArrayList; import java.util.List; @Entity @Getter @SuperBuilder @AllArgsConstructor @NoArgsConstructor @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Item{ @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private String name; private int price; private int stockQuantity; @ManyToMany(mappedBy = "items") private List<Category> categories = new ArrayList<>(); /*비즈니스 로직*/ //todo: stock 증가 public void addStock(int quantity) { this.stockQuantity += quantity; } //todo: stock 감소 public void removeStock(int quantity) { int restStock = this.stockQuantity - quantity; if (restStock < 0) { throw new NotEnoughStockException("need more stock"); } this.stockQuantity = restStock; } } <ItemController 클래스>package jpabook.jpashop.controller; import jakarta.validation.Valid; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.service.ItemService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(@Valid @ModelAttribute("form") BookForm form, BindingResult result) { if (result.hasErrors()) { return "items/createItemForm"; } Book book = createBook(form); itemService.saveItem(book); return "redirect:/"; } //todo: dto 정보를 받아서 엔티티를 만드는 단순 작업은 컨트롤러에서 처리 private Book createBook(BookForm form) { return Book.builder() .name(form.getName()) .price(form.getPrice()) .stockQuantity(form.getStockQuantity()) .author(form.getAuthor()) .isbn(form.getIsbn()) .build(); } }이렇게 하고, Jpashop의 상품등록에 들어가서 데이터를 입력하면 정상적으로 DB에 데이터가 저장됩니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프로젝트 초기 설정에서 오류로 실행이 안됩니다.
1월 22, 2024 11:47:46 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformationINFO: HHH000204: Processing PersistenceUnitInfo [name: hello]1월 22, 2024 11:47:46 오후 org.hibernate.Version logVersionINFO: HHH000412: Hibernate ORM core version 6.4.2.Final1월 22, 2024 11:47:46 오후 org.hibernate.cache.internal.RegionFactoryInitiator initiateServiceINFO: HHH000026: Second-level cache disabled1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureWARN: HHH10001002: Using built-in connection pool (not intended for production use)1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001005: Loaded JDBC driver class: org.h2.Driver1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001012: Connecting with JDBC URL [jdbc:h2:tcp://localhost/~/test]1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001001: Connection properties: {password=****, user=sa}1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001003: Autocommit mode: false1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>INFO: HHH10001115: Connection pool size: 20 (min=1)1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl constructDialectWARN: HHH90000025: H2Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)1월 22, 2024 11:47:47 오후 org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateServiceINFO: HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)1월 22, 2024 11:47:47 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stopINFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test] 코드는 프로젝트 초기 설정 소스 코드 그대로 실행했는데 안됩니다...
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
변수 값 변경 시 기존의 값은 "삭제"된다의 의미
int a = 10; System.out.println(a); // 10 a = 50; System.out.println(a); // 50이 코드에서 a에 50이 할당될 때 10은 메모리에서 삭제된다는 의미인가요?그러면 이 재할당이 될 때 jvm 내의 가비지 컬렉터가 작동해서 메모리를 수거해 가는 것이라고 이해하면 되는 것인지 궁금해서 질문 남깁니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
existsByBookNameAndIsReturn
안녕하세요!! 저는 UserLoaHistoryRepository에 existsByBookNameAndIsReturn이렇게 메소드를 만들어도 bean 에러가 나네요,, 이유가 뭘까요!! 선생님
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 기초 듣고 넘어왔는데
스프링 설치를 어떻게 해야할까요 영상은 몇년전 영상같은데 저는 맥북이라 어떻게 진행해야할지 모르겠네요
-
미해결김영한의 실전 자바 - 기본편
접근제어자 문제풀이 2번
안녕하세요! 접근제어자 문제풀이 2 번에서 궁금한 점이 있어서 질문 남깁니다.items 배열을 반복문을 돌렸을때,Item item = item[i] 안에는 객체 주소값이 들어있을텐데 ,그럼 item.name (x001.name) 이렇게도 접근할 수 있지 않나요? 에러가 떠서요ㅜㅜ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello 입력 시 에러가 납니다
검색해보니 여러 상황이 있어 java 폴더에 있는 것도 확인했고 오타도 없는거 같은데 왜 작동이 안 될까요...?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨김영한의 실전 자바 - 기본편
다향성 문제와풀이2번
OCP원칙 지키면서 푸는게 어려운거맞죠..선생님..원칙을 지키면서 풀이를 하려니 정말 어려운것같습니다..지금까지 풀이와풀이 문제들중 막힌것이 없는데 여기서 막히니 너무 막막합니다..선생님 코드를 보면 이해는 바로하겠는데 제 머리로는 바로 원칙을 지키며 푸는게 어렵습니다..처음엔 다 그런거겠죠
-
미해결김영한의 실전 자바 - 기본편
인터페이스에서 static 메서드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의 정말 잘듣고 있습니다! 감사합니다. 강의를 듣던도중 갑자기 궁금한게 생겼는데요인터페이스나 추상 클래스를 상속받은 자식클래스에서 static 메서드의 구현을 강제하도록 하는 방법은 없을까요?예를 들어 cow,cat,dog 자식클래스의 생성된 객체 개수를 카운트할때 각각의 클래스에 static int count 변수를 만들고 static 메서드를 각각 만들수 있도록, 구현이 안되면 컴파일 에러가 뜨도록 할순 없나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderQueryRepository 에러
OrderItemQueryDto와 OrderQueryDto를 생성한 후, OrderQueryRepository를 생성하여 학습하고 있는데 강의 내용과는 다르게 진행중입니다. (밑에 질문 글에 한번 올렸었습니다.) 스프링데이터JPA로 진행하다보니 @Query를 작성하여 연습하는 중 java.lang.IllegalStateException: Cannot instantiate class 'jaein.crudpractice.repository.order.query.OrderItemQueryDto' (it has no constructor with signature [java.lang.Long, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime], and not every argument has an alias) 자꾸 생성자쪽에서 문제가 발생합니다. OrderItemQueryDtopackage jaein.crudpractice.repository.order.query; import com.fasterxml.jackson.annotation.JsonIgnore; import jaein.crudpractice.domain.OrderItem; import lombok.Data; @Data public class OrderItemQueryDto { @JsonIgnore private Long orderId; private String itemName; private int count; public OrderItemQueryDto(Long orderId, String itemName, int count) { this.orderId = orderId; this.itemName = itemName; this.count = count; } } OrderQueryDtopackage jaein.crudpractice.repository.order.query; import jaein.crudpractice.domain.Order; import jaein.crudpractice.domain.OrderItem; import jaein.crudpractice.domain.OrderStatus; import lombok.Data; import lombok.EqualsAndHashCode; import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Data @EqualsAndHashCode(of = "orderId") public class OrderQueryDto { private Long orderId; private String name; private LocalDateTime loanDate; private LocalDateTime returnDate; private List<OrderItemQueryDto> orderItems; public OrderQueryDto(Long orderId, String name, LocalDateTime loanDate, LocalDateTime returnDate, List<OrderItemQueryDto> orderItems) { this.orderId = orderId; this.name = name; this.loanDate = loanDate; this.returnDate = returnDate; this.orderItems = orderItems; } } OrderQueryRepositorypackage jaein.crudpractice.repository.order.query; import jaein.crudpractice.domain.Order; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface OrderQueryRepository extends JpaRepository<Order, Long> { @Query("select distinct new jaein.crudpractice.repository.order.query.OrderQueryDto(" + "o.id, s.name, o.loanDate, o.returnDate, oi) " + "from Order o " + "join o.student s " + "join o.orderItems oi") List<OrderQueryDto> findOrderQueryDtos(Pageable pageable); @Query("select distinct new jaein.crudpractice.repository.order.query.OrderItemQueryDto(" + "oi.order.id, i.name, oi.count)" + " from OrderItem oi " + " join oi.item i " + " where oi.order.id = :orderId") List<OrderItemQueryDto> findOrderItems(@Param("orderId") Long orderId); } 생성자도 다 맞게 작성했는데 어느부분이 잘못됐는지 모르겠습니다.강의대로 EntityManager를 사용하여 해보아도 같은 에러가 발생합니다.도메인에서 연관관계 매핑에서 문제가 있는걸까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
애플리케이션을 실행 시킬 때 마다 초기화
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 영상에서는 member를 두번 persist 하고 나면 DB에 JPA 어플리케이션을 다시 실행 시키더라도 해당 member 데이터가 2개 남아있는데, 저는 실행시킬 때 마다 해당 데이터들이 모두 사라지네요package hellojpa;import jakarta.persistence.*;public class JpaMain {public static void main(String[] args) {EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try {/* Member member = new Member(); member.setId(1L); member.setName("HelloA"); em.persist(member); */ Member findMember = em.find(Member.class, 1L); System.out.println("findMember.getId() = " + findMember.getId()); System.out.println("findMember.getName() = " + findMember.getName()); findMember.setName("HelloJPA"); tx.commit(); } catch (Exception e) {tx.rollback(); } finally {em.close(); }emf.close(); }}주석 처리한 부분을 먼저 실행 시키고, 이후에 저 부분을 주석처리하고 findMember를 하면 해당 멤버를 가져와야 하는데 그게 안되고 매번 DB가 초기화가 됩니다. 왜 그럴까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우에서 빌드 이후에 오류가 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이런 오류가 발생하는데 이거는 버전이 안맞아서 발생하는건가요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
~/jpashop.mv.db 파일을 못찾겠습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이 과정에서 jdbc:h2:~/jpashop까지 입력을 완료하고 데이터베이스가 잘 생성이 되었는데 ~/jpashop.mv.db이 어디에 생성된건지 모르겠습니다. ~/jpashop.mv.db
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Java 코드를 Kotlin 코드로 가져올 때 Wrapping 한다는게 무슨 뜻일까요?
안녕하세요. 16:52초에 Java 코드를 보며, 맥락을 확인하고 Java 코드를 가져오는 지점을 Wrapping 한다고 설명을 해주셨는데 이 때 Wrapping에 대하여 좀 더 설명을 해주실 수 있을까요?코틀린으로 코드를 짜려고 하면 아무래도 자바로 짠 자료들이 많아서 자바 코드를 코틀린 코드로 옮길 때 컬렉션 타입을 어떻게 해야할 지 조금 고민이 되는 경우가 많아서 질문 드려봅니다!
-
미해결김영한의 실전 자바 - 기본편
객체지향 문제와 풀이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]객체지향과 문제의 풀이 강의 중 문제와 풀이 부분 첫번째 문제에서 Account 클래스를 만들고 AccountMain에 이용을 하는데 이때 Account 클래스 안에 package oop1.ex; public class Account { int balance; void deposit(int amount){ balance += amount; } void withdraw(int amount){ if(balance >= amount){ balance -= amount; }else{ System.out.println("잔액부족"); System.out.println("잔고: " + balance); } } }package oop1.ex; public class AccountMain { public static void main(String[] args) { Account account = new Account(); account.deposit(10000); account.withdraw(9000); account.withdraw(2000); } }이렇게 작성했는데 이때 궁금한점이 Account 클래스 안에 print 출력도 같이 해도 되는건지 아니면 선생님 처럼 AccontMain에 해야하는지 궁금합니다.각각 장단점이나 아니면 어떤게 더 좋거나 그렇게 해야한다 이런게 있으면 이유를 들어서 설명해주시면 감사하겠습니다.