묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
@Transactional + @Commit의 의미
비슷한 질문이 올라왔는데 질문의 의도와 답변 내용이 불일치하는 것 같아 다시 한번 질문드리겠습니다.@Transactional(readonly=false)는 테스트 후에 자동으로 롤백되는 기본 동작을 방지하기 위해(즉 커밋되도록 하기 위해) 사용됩니다. 이전 강의에서 JUnit 테스트 시 데이터를 변경한 결과를 DB에서 확인하고자 할 때 이 설정을 사용한 것으로 기억합니다. 질문@Transactional은 기본적으로 rollback=true가 디폴트이므로 @Transactional + @Commit은 @Transactional(readonly=false) 같은 의미라고 볼 수 있을까요?
-
해결됨실전! Querydsl
lombok의 @ToString이 가지는 이점
lombok의 @ToString으로 설정해주는 것보다 인텔리제이가 단축키로 toString을 오버라이드 하는 것이 더 간단해보이는데 @ToString이 가지는 이점이 있나요?
-
미해결김영한의 실전 자바 - 중급 1편
예외 계층 main
강의자료에서 예외 계층2- 활용 직전에 있는 MainV3의 main()에 대한 질문입니다.main() 옆에 throws xxException을 지우셨는데, 체크 예외를 발생시키는 메서드를 호출하기 때문에 throws를 생략하면 안 된다고 생각했는데, 삭제하신 이유가 무엇인지 궁금합니다! public class MainV3 { public static void main(String[] args) { ... | }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Spring boot, db연동 안될 때
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용 따라서 타이핑 후에 h2.bat을 실행 시킨 후 jpashopapplication.java 또한 실행시키고 db사이트 내에서 refresh했을 때 db가 연동되지 않는데 이 경우엔 어떻게 해야 할지 궁금합니다.아래는 구글 드라이브 압축 파일 링크 올려놨습니다.답변 기다리겠습니다.https://drive.google.com/file/d/1mRpp0B2EkM1WAHF9GpwKsY4JrozX4_zQ/view?usp=drive_link
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 데이터 베이스 연결문제..?
13강을 듣고 데이터베이스를 연결했는데 이름과 나이를 등록하면 둘다 빈칸으로 떠요. 터미널에서 mysql 조회해보면 이름 나이 다 잘 뜨는데 왜 그럴까요? 수정,삭제 기능도 안되구요ㅠㅠ
-
미해결김영한의 실전 자바 - 기본편
displayInfo 메소드에 배열 인스턴스 문의
Book 클래스 displayInfo 메소드에 book1 ~ book3 까지 각각 인스턴스를 넣어 정상적으로 출력이 되었습니다 void displayInfo(){ System.out.println("제목:" + title + ", 저자:" +author+ ", 페이지:" + page); } --- Main 메소드 --- book1.displayInfo(); book2.displayInfo(); book3.displayInfo(); 만약 displayInfo 메소드에 Books 인스턴스 배열을 매개 변수로 넣고 for문으로 처리하고 싶으면 어떻게 코드 수정을 해야 할까요? 뾰족한 수가 생각이 안나 스스로 해보는 중인데 ㅠㅠ 되지 않네요 혹시 가능할까요..? Book 클래스 displayInfo 메소드에 아무 매개변수를 배열 인자를 받아야 뭐 해결이 될거 같은데..ㅠ < 시도중인 코드> === Book 클래스 displayInfo 메소드=== void displayInfo(Book[] books){ for(int i=0; i <= books.length;i++){ System.out.println("제목:" + books[i].title + ", 저자:" +ooks[i]. author+", 페이지:" + ooks[i]. page); } } === 메인 메소드 === Book book1 = new Book(); Book book2 = new Book("Hello Java", "Seo"); Book book3 = new Book("JPA 프로그래밍","Kim", 700); Book[] books = {book1, book2, book3}; books.displayInfo();
-
미해결실전! Querydsl
contextLoads() 테스트 오류 질문드립니다.
@SpringBootTest class QuerydslApplicationTests { @Autowired EntityManager em; @Test void contextLoads() { Hello hello = new Hello(); em.persist(hello); JPAQueryFactory query = new JPAQueryFactory(em); QHello qHello = new QHello("h"); Hello result = query .selectFrom(qHello) .fetchOne(); assertThat(result).isEqualTo(hello); } }강사께서 진행하신 테스트를 똑같이 따라했는데 계속해서 TransactionRequiredException이 발생했습니다. 결국 @Transactional을 붙여주니 테스트가 정상적으로 수행됐는데요, 강의에서는 @Transactional이 없이도 잘 동작했는데 왜 저는 그렇지 않은 이유가 무엇일까요? 참고로 Spring Boot 3.2.5 최신 버전 사용중입니다.
-
미해결실전! 스프링 데이터 JPA
junit5쓴다는건가요ㅠ
강의 영상에서는 위와같이 구성해서 4를 제외 시켰자나요? 그런데 왜 강의 pdf 에서는 4를 쓴다는건가요?ㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시와 연관관계 관리-프록시 질문있습니다.
refMember.getUsername()을 하면 프록시가 초기화 된다고 하셨는데요. em.detach나 em.clear가 영속상태에서 준영속상태로 바껴야지 초기화인데 단순히 get만 호출한건데 준영속으로 바뀔수가 있나요? 즉시 로딩과 지연 로딩3분 16초 m.getTeam().getName()이부분이 프록시라고 하셨는데 이부분만 보고 프록시인지 아닌지 어떻게 알아요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
사용자모드와 커널모드 피드백
유저 모드에서 I/O 장치들과 같은 특정 리소스에 접근이 불가한 것을 배웠습니다.스레드가 커널 모드가 필요하지 않는 작업을 수행할때도 어쨌든 CPU를 할당받아서 연산을 할 수 있다는 점도 직관적으로 알 수 있도록 그림이 아래와 같이 바뀌면 어떨까요?
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스를 익명 클래스로 바꿀 때
익명 클래스를 사용할 때는 상위 클래스가 필요하다고 하셨는데, 만약 어떤 지역 클래스를 익명 클래스로 만드려고 하는데 해당 지역 클래스에서 implements 또는 extends 하는 게 없다면 익명 클래스를 만들 때 new Object() { ... }로 해야 하는 건가요?
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스 인스턴스 생성 전에 지역변수의 값 변경
public class LocalOuterV4 { public Printer process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { @Override public void print() { System.out.println("localVar = " + localVar); // 지역클래스가 접근하는 지역변수 (1) System.out.println("paramVar = " + paramVar); // 지역클래스가 접근하는 지역변수 (2) } } paramVar = 20; localVar = 10; Printer printer = new LocalPrinter(); // 지역 클래스의 인스턴스를 생성할 때, 지역 클래스가 사용하는 지역변수를 캡쳐해서 멤버로 포함시킨다. return printer; } }위 코드와 같이 LocalPrinter 인스턴스를 생성하기 전에 paramVar와 localVar의 값을 수정하려고 했습니다. 그러면 지역변수 캡쳐 전이니까 2, 1이 아닌 바뀐 20, 10을 캡쳐해서 지역 클래스의 인스턴스에 포함시키면 되겠다고 생각했습니다.그런데, paramVar와 localVar의 값을 수정하는 코드를 new LocalPrinter()의 이후에 적든, 이전에 적든에 관계없이 컴파일 오류가 발생합니다.제가 생각한 이유는 이미 자바 차원에서, 지역클래스가 사용 중인 지역변수는 값이 바뀌는 것 자체를 막아두었기 때문이라고 생각합니다. 제 생각이 맞는지 알려주시면 감사하겠습니다
-
미해결실전! 스프링 데이터 JPA
ID에 @GeneratedValue를 적용하지 않았는데 강의처럼 동작하지 않습니다.
@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Item { @Id private String id; public Item(String id) { this.id = id; } } public interface ItemRepository extends JpaRepository<Item, String> { } @SpringBootTest class ItemRepositoryTest { @Autowired ItemRepository itemRepository; @Test void save() { Item item = new Item("A"); itemRepository.save(item); } } 위와 같이 강의를 따라서 테스트 코드를 작성했습니다. 그런데디버깅 찍은 곳을 확인해보니Member(id=null, username=user0, age=0)이렇게 나왔습니다. 분명 생성자에서 Item의 id를 "A"로 세팅했는데 어디서 문제가 생긴걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.> Task :compileJava FAILEDC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:4: error: package jpabook.jpashop.domain.item does not existimport jpabook.jpashop.domain.item.Item; ^C:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:20: error: cannot find symbol private Item item; ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:31: error: cannot find symbol public static OrderItem createOrderItem(Item item, int orderPrice, int count) { //item에 price가 있지만, 할인 가격일 수 있어서 orderPrice로 따로 사용 ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:20: error: cannot find symbol private Item item; ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:11: error: cannot find symbol@Getter @Setter ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\service\OrderService.java:7: error: package jpabook.jpashop.domain.item does not existimport jpabook.jpashop.domain.item.Item; ^6 errors이렇게 자꾸 Item을 인식하지 못하는거 같은데, 계속 봐도 오타가 안보입니다.. 도와주세요..구글 드라이브에 코드 업로드해두었습니다.https://drive.google.com/file/d/1Sj8eAPexXkQJ5livmAq_BaTAXaTSd_zu/view?usp=sharing
-
미해결실전! 스프링 데이터 JPA
트랜젝션 옵션의 전파에 대해 질문드립니다.
예전에 영한님이 답변하신 내용 중에스프링이 제공하는 트랜잭션은 처음 시작한 트랜잭션을 기반으로 전파됩니다.그러니까 서비스에서 트랜잭션을 시작하면 리포지토리의 트랜잭션이 해당 트랜잭션을 그대로 이어 받습니다.라는 내용이 있었습니다.그렇다면, 컨트롤러, 서비스, 리포지토리 순으로 코드가 진행된다고 할 때, 만약 서비스 계층에 @Trasnactional(readonly=false)가 걸려있고 리포지토리 계층에 @Trasnactional(readonly=true)가 걸려있으면 서비스 계층이 먼저 호출되므로 readonly=false 옵션이 적용된 채로 리포지토리 계층까지(기존 리포지토리 계층의 옵션은 무시된채로) 코드가 흘러가는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
세팅 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.https://drive.google.com/file/d/1Djxk3OiXF9ALDQpWDbr1K3yH7aeaehlu/view?usp=drive_link 시작 초기에 build.gradle이랑 jpashopapplication을 돌렸을 때, Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache [in thread "Daemon worker"] Could not create an instance of type ijmapper_2lopa9aslcq9lq2pwmglefwkb.> Could not initialize class org.codehaus.groovy.runtime.InvokerHelper* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 이런 에러가 2개떠서 더이상 진행하지 못하는 상황입니다. 혹시 해결법 알 수 있을까요?
-
미해결김영한의 실전 자바 - 중급 1편
인스턴스 간 참조관계
public class InnerOuterMain { public static void main(String[] args) { InnerOuter outer = new InnerOuter(); InnerOuter.Inner inner = outer.new Inner(); } }내부 클래스에 대한 인스턴스는 바깥 클래스에 대한 인스턴스를 가지고 있습니다. 그렇지만 바깥 클래스의 인스턴스는 내부 클래스의 인스턴스를 가지고 있지 않은게 맞나요? 바깥 클래스인 InnerOuter 내에 메서드를 만들고, 내부 클래스가 가진 변수에 접근하는 코드를 작성하니 cannot find symbol이 뜨긴 했습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA repository질문입니다.
JPA repository를 public interface MemberRepository extends JpaRepository<Member, Long> { } 이런식으로 사용하면 기본적인 crud가 된다고 구글링하다가 알게됐습니다.아직 선생님 수업을 다 듣지 못했지만 이런식으로 사용하지않는걸로아는데 save() 레코드 저장 (insert, update) findOne() primary key로 레코드 한건 찾기 findAll() 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 count() 레코드 갯수 delete() 레코드 삭제이렇게사용하면 em.persist 처럼 사용안하고 그냥 save만 불러서 쓸수이ㅣㅆ는거아닌가요?제가 아직 잘몰라서 ㅠㅠ햇갈립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
세팅 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/13uBXfVIbf-eYNNi0rG_paNywzx65M4CI/view?usp=drive_link 시작 초기에 build.gradle이랑 jpashopapplication을 돌렸을 때, Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache [in thread "Daemon worker"] Could not create an instance of type ijmapper_2lopa9aslcq9lq2pwmglefwkb.> Could not initialize class org.codehaus.groovy.runtime.InvokerHelper* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 이런 에러가 2개떠서 더이상 진행하지 못하는 상황입니다. 혹시 해결법 알 수 있을까요?
-
미해결김영한의 실전 자바 - 기본편
제어자2번 문제 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에서 item.getName()은 클래스 Item의 메서드인데 클래스 ShoppingCart에서는 따로 인스턴스를 만들지 않았고 배열인 Item[] items = new Item[10]; 만 만든게 아닌가요? items.getName() 도 아니고 어떻게 호출이 되는지 이해가 안가서 질문 남깁니다