묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계에서 JSON 변환 시 무한루프 문제 질문드립니다.
안녕하세요.스프링 시큐리티를 커스텀해서 이런저런 작업 중입니다.로그인 절차를 모두 통과화면 다음 코드에서 응답을 내려줍니다.Account account = (Account) authentication.getPrincipal(); response.setStatus(HttpStatus.OK.value()); response.setContentType(MediaType.APPLICATION_JSON_VALUE); objectMapper.writeValue(response.getWriter(), account);객체를 JSON으로 만드는 과정에서 무한루프가 발생해 스택오버플로우가 발생했습니다.왜냐하면 Account는 Roles라는 클래스를 알고 있고 Roles는 Account를 알고 있거든요(양방향). Roles는 Account, Role의 다대다 관계를 해소하긴 위한 중간 테이블입니다. Account에서 Roles 정보를 알고 있어야 하기 때문에 양방향 연관관계를 가지게 됐습니다.문득 어느 강의에서 엔티티를 노출하지 말라고 하셨던 게 생각이 났습니다. 검색을 해보니 객체를 json으로 만들 때 특정 객체를 하지 않는 어노테이션이 있는 것 같은데 저의 본능은 이걸 쓰지 말라고 하네요.별도의 반환 객체를 만들고 싶은데 이런 방법이 일반적인 건지 궁금합니다. 저의 사고 흐름도 올바른 건지 알고 싶습니다. account 객체에는 credential 정보도 있으니 필요한 정보만 담을 수 있는 반환용 객체를 만드는 게 맞을 것 같긴 한데 이런 사고흐름에 대한 검증 한 번 부탁드립니다. 그리고 이런 객체도 dto라고 해도 될까요?감사합니다.
-
해결됨김영한의 실전 자바 - 기본편
다형성 다운캐스팅은 왜 하는건가요?
10강 다형성에서 다운캐스팅에 대해 배웠습니다.강의에서도 왜 이렇게 번거롭게 써야되는지는 다음에 다형성 활용에 들어가면 알게된다고 하셔서 일단 그렇구나 하고 학습을 했습니다.그런데 다형성 활용에 들어가서도 다형성 참조를 이용한 방법과 인터페이스를 활용한 방법등은 나오지만 "그래서 캐스팅은 대체 왜 하는건데?" 에 대한 해답을 모르겠습니다.활용편에서도 캐스팅을 사용하는 내용은 없었구요.다운 캐스팅은 대체 어떤 상황에서 사용하는건지가 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 와 웹페이지 연동이 안되는 듯 합니다
순수 JDBC 수업을 들으며 코드를 복붙하였고 클래스리소스 위치도 봤는데 웹페이지에서 H2에 저장된 데이터가 보이지 않습니다 웹페이지에서 보이는 목록입니다 H2에서 보여지는 데이터입니다 application.properties 와 SpringConfig 코드창을 올립니다스프링부트 3.X 자바는 17버전을 사용하고 있습니다혹시 몰라 인텔리제이에서 H2를 연동하였는데도 웹페이지에서 DB로 저장이 안되네요 ㅠㅠ 어느 부분을 더 검색해서 조치해야할까요...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HelloSpringApplication.java jdk 17로 맞췄음에도 실행되지 않을 때
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]jdk 버전을 17로 맞췄음에도 HelloSpringApplication.java의 실행버튼이 활성화 되지않습니다. 이런 경우는 어떻게 해결해야하나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
NamedLock 에서 @Transactional 사용에 관한 질문
NamedLock을 사용한 예제실습 중 질문입니다NamedLockStockFacade의 decrease 메소드에 @Transactional 을 걸고 StockService의 decrease 메소드에는 @Transactional 을 걸지 않아도 잘 작동해야하는거 같은데, 데드락에 걸리는거 같습니다. 그 이유가 궁금합니다제 생각에는 NamedLockStockFacade의decrease 메소드에 @Transactional 을 걸면,lockRepository.getLock(id.toString()), stockService.decrease(id, quantity), lockRepository.releaseLock(id.toString()) 이 3 메소드가 모두 한 트랜잭션 안에서 처리되므로 lock을 걸고 lock을 해제하는 그 사이에 재고를 감소하므로 아무 문제가 없어보여서 질문드립니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
충돌의 기준이 무엇인가여?
Optimistic Lock은 충돌이 빈번할 경우 적절하지 않다고 하는데, 충돌이 기준이 어떤건지 궁금합니다. 별도로 프로젝트에서 Mybatis랑 같이 쿠폰발급 프로젝트에서 응용중입니다.전 쿠폰 500개를 기준으로 발급된 수량을 합산하는 로직입니다.스레드 100개기준으로 동시성테스트를 진행했을때 69개만 적용되더라구요. 재시도 로직에서 Thread.sleep(1000)으로 하면 98개까지 적용됩니다. 그런데 스레드 10개를 기준으로 동시성 테스트를 진행했을때는 정합성이 맞고, 스레드1000개를 돌려버리면 500개가 전부다 발급됩니다. 1000개 중에 몇개는 실패하고, 몇개는 성공하고 그래서 500개 전부 다 발급된 상황이라고 예상됩니다.Q1. 충돌이 많은 상황이라는게 동시에 여러 스레드가 접근하는 걸 의미하는게 맞나요? 충돌의 기준은 무엇인지, 어플리케이션 내부 로직마다 다른걸까요?Q2. 충돌이 빈번하지 않을때 낙관적락을 사용하는 경우가 어떤 경우인지 궁금합니다.. 정합성이 많이 떨어진다고 생각하는데 실제로 현업에서 많이 사용하나요?Q3. 데이터베이스에 락을 걸지 않아서 성능상 이점이 있다고 하셨는데, 제가 테스트해봤을때는 pessimisticLock보다 Mysql에 더 부하가 많이가더라구요. 재시도로직으로 I/O작업이 더 많이 일어나서 그런것 같은데, 말씀하시는 '성능상 이점'이라는건 어떤건지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
실전 예제 4번 클립에서 마지막 부분에 하신 말씀 질문입니다!
안녕하세요.11:03 경에 "이런 것들 json으로 말아넣자"라고 말씀하신 부분이요. 조금 더 풀어서 설명해주실 수 있을까요? 당장 이 프로세스가 필요해서는 아니지만 개념적으로라도 알고 있으려고 합니다!"이런 데이터"에 관해서도 조금 더 풀어서 말씀해주실 수 있을까요? 어떤 성격의 데이터들은 테이블이 아니라 json으로 관리할 수 있다는 것인지 조금 더 구체적으로 알고 싶습니다.감사합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
다시 강의를 보니 드는생각..
이메일 인증요청시간을 1시간으로 잡으셨는데인증할때마다 마지막인증요청 시간을 업데이트 쳐줘야 하는거 아닌가요 ???(/resend-confirm-email) 이 메서드를 실행 정상 했을때 마다
-
미해결스프링 시큐리티
Ajax방식도 똑같이 Session방식을 사용하는건가요?
안녕하세요.Ajax를 사용하면 UsernamePassword방식과 같이 세션쿠키를 사용해서 인증/인가 처리를 하는건가요?
-
해결됨김영한의 실전 자바 - 기본편
인터페이스 관련하여 질문있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 인터페이스와 관련해서 궁금한 게 있어 질문드립니다.Eatable(인터페이스)Fruit(Eatable의 구현체)Apple과 Grape(Fruit 자손)다음과 같은 경우에서 Apple과 Grape는 Eatable을 구현하지 않아도 되나요??
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
안녕하세요 강의 하실때 쓰시는 pdf파일 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]혹시 영한선생님이 꾸미시는 템플릿(?) 은 어떤걸 사용하셔서 만드시는걸까요? pdf파일보면 정리가 너무잘 되어있어서 저도 정리할때 사용하고 싶습니다 !
-
미해결스프링 시큐리티
Config 파일 생성 시 질문이 있습니다.
안녕하세요.기존에 form인증방식에서 만들었던 Config 파일이 있고 Ajax인증방식의 Config파일을 만들었더니 Ajax필터가 정상작동하지 않았습니다. 정확히 뭐 때문에 작동을 안하는지는 모르겠지만 form인증방식에서 만들었던 Config 파일의 빈으로 등록한 SecurityFilterChain을 주석처리하니까 Ajax필터가 작동하더라구요. 제가 잘못 작성한 걸까요? 혹시 이유를 알 수 있을까요?감사합니다.<form 인증방식><ajax 인증방식>
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2 연결 오류가 떠요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2 데이터 베이스를 새로 생성하면서 이름과 패스워드를 설정했는데강의대로 따라가다가 Error : Wrong user name or password가 떠요설정한 이름과 패스워드를 아예 없애는 방법이 있을까요?아니면 속성에 name과 password를 적는 방법을 알려주시면 감사하겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2 데이터베이스 설정관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다름이 아니라 다른 프로젝트를 하면서 test라는 이름의 DB를 이미 만들어 놔서 그런지는 몰라도 이러한 오류가 뜨더군요 이게 이전에 만들어 놓은 test라는 이름의 db파일때문인지 궁금합니다 또한 제가 이전에 작업했던 프로젝트도 h2데이터 베이스를 사용하느라 test라는 주소로 연결토록했는데 이전 프로젝트의 application properties를 testDB이런식으로 이름을 바꿔주면 제가 지금 사용할때 test라는 이름으로 h2 데이터베이스를 사용할 수 있을까요? 마지막으로 이미 생성된 test라는 DB파일이 있다면 해당 디비로는 연결이 되면 안되는 건가요? 하나의 디비 파일 연결을 (물론 테이블의 구성요소가 다르겠지만) 다른곳에서 사용할 수 없는 걸까요? 질문 하다 보니 너무 길어진 점 죄송합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
멤버와 팀의 영속화 순서를 뒤집었을 때(?) 생성되는 query에 대한 질문입니다!
안녕하세요.이상한 코드이긴 하지만 문득 궁금해서 테스트를 해봤습니다.하이버네이트 버전은 6.4.2.Finalh2 데이터베이스 버전은 2.2.224 Team team = new Team(); team.setName("teamA"); Member member = new Member(); member.setUsername("memberA"); member.setAge(49); member.setTeam(team); em.persist(member); em.persist(team);이 경우 발생하는 query는 다음과 같습니다.Hibernate: /* insert for hellojpa.jpql.Member */ insert into Member (age, TEAM_ID, username, id) values (?, ?, ?, ?) Hibernate: /* insert for hellojpa.jpql.Team */ insert into Team (name, id) values (?, ?) Hibernate: /* update for hellojpa.jpql.Member */ update Member set age=?, TEAM_ID=?, username=? where id=?제가 생각한 흐름은 이렇습니다.멤버가 데이터베이스에 동기화된다팀이 멤버에 저장되어 있지만(객체 상으로), 팀 테이블에는 해당 데이터가 없다멤버의 외래키(team_id)가 아직 null이다팀이 데이터베이스에 동기화된다이제 멤버의 외래키를 업데이트 한다외래키만 업데이트 하면 될 것 같은데 외래키를 가진 레코드 전부를 수정한다이 흐름이 맞을까요? 외래키만 업데이트 하는 게 아니라 멤버의 해당 레코드를 전부 업데이트하는 게 생각했던 것과 달라 질문드리게 됐습니다.답변 미리 감사드립니다.
-
미해결김영한의 실전 자바 - 기본편
인텔리제이
자바 인텔리제이에서 분명 전 다른 패키지에 클래스를 만들고 다른 complie 했는데, 이전 다른 패키지에서 연습한 코드에서 에러가 났다고 뜨면서 코드 실행이 안되는데, 이럴때 유용한 방법이 있나요?
-
미해결김영한의 실전 자바 - 기본편
메서드 영역
여기 이 두 표현이 모순적인 것 같은데, 인스턴스 안에 메서드를 가지는게 맞나요? 어떤 의미에서 각각의 인스턴스가 '내부' 에 메서드를 가진다고 표현되어 있는건지 이해가 잘 안돼요
-
미해결
JAVA Scanner
package bufferTest; import java.util.Scanner; public class BufferTest {public static void main(String[] args) {Scanner scan = new Scanner(System.in); String a = scan.next(); String[] arr1 = {"a"}; System.out.println(System.identityHashCode(a));System.out.println(System.identityHashCode(arr1[0])); }} 왜 arr[0]과 a의 주소 값이 다른가요..???답변 주시면 정말 감사하겠습니다!
-
미해결스프링 시큐리티
강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..
안녕하세요 강사님스프링 시큐리티 완전 정복 [6.x 개정판]를 애타게 기다리고 있는 수강생입니다..다름이 아니라 스프링과 시큐리티 버전업해서 미리 해보고 있는데 form 로그인을 할 경우에는 쿠키가 자동으로 생성되는데ajax로 로그인할 경우에는 session 로그인 처리는 되나 쿠키가 생성되지를 않습니다..정말 모르겠습니다....제발 부탁드리겠습니다..ㅠㅠ감사합니다.. https://github.com/KMSKang/springboot-jpa-board
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 매핑 오류 - 실전 예제1
섹션 4 - 엔티티 매핑 에서 실전예제1 관련 질문입니다. 강사님께서 jpashop 프로젝트를 하고 계신데 저도 열심히 따라 하고 있었습니다. 근데 지금 H2 가 연결이 계속 안된다라고 뜨는데 혹시 이유 아시는 분 계실까요.......ㅠㅠㅠㅠ사진 첨부하겠습니다.제발 꼭 좀 도와주세요ㅜㅜㅜ!!!