inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

{0},{1},{2}에 의미를 잘 모르겟습니다.

미해결

실전! Querydsl

String result = queryFactory .select(Expressions.stringTemplate("function('replace', {0}, {1}, {2})", member.username, "member", "M")) .from(member) .fetchFirst(); 1분에 강사님께서 {0},{1},{2} {}안에 있는걸 0번 1번 2번이라고 말씀하셨는데 파라미터의 무엇을 넣어주는건가요?

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

양방향 컬렉션에서 삭제가 궁금합니다.

해결됨

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

강사님 강의 덕분에 스프링이 너무 재미있습니다. 1 대 다로 양방향 매핑한 두 엔티티가 있다고 가정하고 다 부분의 엔티티를 삭제할 때, 1의 엔티티의 컬렉션을 모두 순회해서 해당 데이터를 전부 찾은 다음 컬렉션에서 remove를 해야하는 것인가요? 순회를 하게 되면 속도가 느려지는 것 같아 걱정되고 궁금하여 질문을 남기게 되었습니다. 읽어주셔서 정말 감사합니다.!!!!!

  • JPA
  • java
김어진 댓글 1 좋아요 0 조회수 369

MemberRepository에서 findByName 메서드

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 저는 중복 이름 허용하려고 이렇게 두신 줄 알았는데 여기서 보니까 중복 이름을 허용하지 않으시더라구요 그럴거면 굳이 List로 반환 받을 필요 없고 getSingleResult로 받아도 상관 없는 건가요? 실제 성능이나 이런 건 아무 관계 없겠지만 의미상 저게 더 맞는 것 같아서요. 그리고 id가 서비스에서 추가하는 시점에서 생성되어 있지 않기 때문에 이름으로 검증하는 것으로 알고 있는데, 만약 중복 이름을 허용하고 싶으면 어느 시점에서 검증해야 할까요?

  • java
  • JPA
  • spring-boot
  • 웹앱
  • spring
euni 댓글 1 좋아요 0 조회수 318

modelmapper 와 service계층에서 리턴값에 대해 질문있습니다

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

modelmapper의 경우 자주 사용될 것 같은데 bean으로 등록 해두고 사용하는게 좀 더 유리할까요?? userEntity -> userDto로 변환하여 리턴할때 기존에 파라미터로 받았던 dto값을 그대로 넘겨줘도 될 것 같은데요! 굳이 변환해서 넘겨주는 의도가 어떤것인지 궁금합니다!

  • architecture
  • spring-boot
  • spring-cloud
  • JPA
  • msa
  • Kafka
원석나 댓글 1 좋아요 0 조회수 439

[JPA와 DB 설정, 동작확인] import Assert 오류

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예/ 아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 / 아니오 ) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요, 현재 <JPA와 DB 설정, 동작확인> 내용을 (09:13) 따라가면서 듣고 있는데 import하는 Assert 부분에서 오류가 납니다. <강의> <내 코드> 구글링해서 찾아보니까 (https://aonee.tistory.com/2) build.gradle에 밑 내용 넣으면 된다고 하는데 다른 방법이 있나요? 강의에서는 안 넣어도 잘 되는 것 같아서 여쭤봅니다. 또 제가 devtools 동작오류가 있어서 (https://www.inflearn.com/course/스프링부트-JPA-활용-1/unit/24277?tab=community&q=152186) 질문에서 알려준 사이트 내용대로 build.gradle에 apply plugin: 'idea'를 적었습니다. 저는 이 부분을 바꾸지 않는 선에서 오류를 해결하고 싶어서 다른 방법을 찾고 싶습니다. 추가) 비슷한 질문 보니까 build.gradle를 올리면 좋다고 하셔서 추가합니다. https://www.inflearn.com/course/ 스프링부트 -JPA- 활용 -1/unit/24279?tab=community&q=580709 <bulid.gradle> plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } apply plugin: 'idea' group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }

  • 오류
  • 웹앱
  • spring-boot
  • java
  • spring
  • JPA
blackbird7 댓글 2 좋아요 3 조회수 781

안녕하세요 No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) 이 에러가 나서 도움을 요청합니다.

해결됨

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

MemberRepositoryTest을 실행 했는데 아래와 같이 에러가 나옵니다 Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) * 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. MemberRepositoryTest코드 package jpabook.jpashop; import static org.junit.Assert.*; import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); //JPA 엔티티 동일성 보장 } } application.yml코드 spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug # org.hibernate.type: trace build.gradle코드 plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } 인프런 질문에도 찾아보고 구글링도 해봤는데 뭐때문인지 몰라 질문을 합니다 도와주세요ㅠ 아래는 제코드 구글드라이브 공유링크입니다. https://drive.google.com/drive/folders/1h5v97WrZW3rjxwzl_G2_73a17sXsQYpw?usp=sharing

  • JPA
  • spring-boot
  • java
  • spring
  • 웹앱
감바스 댓글 1 좋아요 0 조회수 1931

하이버네이트에서 지연 로딩된 객체의 필드가 null인 현상에 대해 질문드립니다

미해결

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

안녕하세요 좋은 강의 감사드립니다. 하이버네이트에서 지연 로딩 사용 시, 지연 로딩된 객체가 초기화 되었음에도 불구하고 필드 접근 시 null이 조회되는 현상에 대해서 질문드립니다. 간단하게 현상을 재현하면 다음과 같습니다. 위와 같이 Member가 Team을 지연 로딩으로 설정한 경우이며, 예시를 위해 Team의 name을 public으로 설정하였습니다. 그리고 다음 코드를 실행하면 발생하는 결과는 다음과 같습니다. 이와같은 오류의 원인을 찾아본 결과 stackoverflow에서 지연 로딩으로 설정된 Proxy 객체의 필드는 모두 null로 세팅한다고 얘기해주었습니다. 그러나 관련된 공식 자료를 찾아볼 수가 없어 정확한 작동 원리에 대해 알고 싶어 질문드립니다. 또한 비슷한 현상으로 스프링에서 Proxy 타입으로 생성된 Bean에 대해서는 내부 필드들을 null로 할당하는 것이 있습니다. 이는 공식 문서에 따르면 Spring AOP에서 메서드 실행 조인 포인트만 제공하며, 필드 가로채기에 대해서는 지원하지 않는다고 나와있었습니다. 혹시 지연 로딩된 프록시 객체의 필드가 null로 세팅되는 현상이 위와 관련있는 현상인지에 대해서도 궁금합니다. 관련된 스프링 공식문서는 다음과 같습니다. https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/aop.html 또한 지연 로딩과 null 세팅에 관한 스택 오버플로우 링크는 다음과 같습니다. https://stackoverflow.com/questions/8945365/jpa-hibernate-proxy-not-fetching-real-object-data-sets-all-properties-to-null 너무 긴 질문 죄송합니다. 항상 감사합니다.

  • java
  • JPA
신동훈 댓글 1 좋아요 1 조회수 633

5:38초 질문입니다!

미해결

실전! Querydsl

5:38 초 부근 member 접근 할때 get 을 쓰면 안된다고 테스트니까 그냥 진행하신다고 하셨는데 이게 어떤의미인지 설명 가능할까요? 한 entity 에 대해서 직접적으로 접근 하기 보다는 dto 같은 전달 객체를 이용해서 가지고 와야 된다. 뭐 이런 뜻인건지 좀더 설명을 듣고 싶어 질문 올립니다!

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

트랜잭션 밖에서 값을 수정했는데 왜 update 쿼리가 발생할까요?

미해결

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

위의 그림과 같이 트랜잭션을 시작하기 전에 데이터를 수정했는데 update 쿼리가 나가더라구요... 트랜젝션 밖에서는 값의 조회만 가능할 것 같은데 수정이 되는 이유가 궁금합니다!

  • java
  • JPA
JEONG HYUN KANG 댓글 1 좋아요 0 조회수 330

connect-distributed.bat 오류

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. 윈도우 환경에서 강의를 듣던 중에 막히는 부분이 있어서요. PS C:\Users\hoirias\confluent-6.1.0> .\bin\windows\connect-distributed.bat .\etc\kafka\connect-distributed.properties Error: Could not find or load main class org.apache.kafka.connect.cli.ConnectDistributed Caused by: java.lang.ClassNotFoundException: org.apache.kafka.connect.cli.ConnectDistributed 아직 properties 파일 등을 수정하진 않은 상태인데요, 강의를 보면 수정 전에도 돌아는 가야 하는걸로 보여서요. 자바 버전은 현재 18.0.1.1을 사용하고 있으며, 컨플루언트 doc 참조하여 11.0.4까지 낮췄는데도 동일한 현상 입니다.

  • spring-cloud
  • spring-boot
  • architecture
  • JPA
  • msa
  • Kafka
송승일 댓글 2 좋아요 0 조회수 721

GenerationType.SEQUENCE 전략

해결됨

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 그 GenerationType.SEQUENCE 전략 일때 allocationSize를 지정하면 DB에 key값(id)을 얻기위해 디비에 매번 쿼리를 날리는게 아닌 일정 개수마다 쿼리를 날리기에 최적화가 된다고 하셨고, 그 원리는 메모리를 이용하기 떄문이다라고 하셨습니다. (질문1) 여기서 만약에 어플리케이션이 이중화가 되어있으면, 메모리를 이용한 key값(id) 설정이 조금 이상해질것 같기도한데, 이 부분에 대해서 이상이 없나요? (질문2) 이상이 없다면, 어떻게 처리하는지 알 수 있을까요?

  • JPA
  • java
정태연 댓글 2 좋아요 2 조회수 517

패스워드 수정 테스트 시 현재 인증된 사용자의 email, nickname 값을 mockMvc Parameter로 전달하는 방법에 대한 질문입니다.

해결됨

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하세요. 이 질문은 이전에 제가 등록했던 https://www.inflearn.com/questions/595640 와 연관지어 질문드립니다. '입력값 정상' 케이스의 패스워드 수정 테스트 코드를 아래와 같이 작성해 보았습니다. 위 코드에서 @WithAccount(value = "henu") 어노테이션을 통해 'value 값'을 통해 닉네임과 이메일(value + "@email.com")로 회원 정보를 생성하고, 이를 SecurityContext에 Authentication으로 넣어줌으로써 MockMvc에서도 인증된 사용자 정보를 자동으로 PasswordForm 클래스에 바인딩 시켜 패스워드 수정(POST)이 되었으면 합니다. 하지만 기대한 것과 달리 email, nickname 파라미터를 직접 설정해주지 않으면 테스트가 실패하는 상황입니다. 패스워드 수정(POST)은 View에 있는 Form을 통해 입력된 값들이 요청을 통해 넘어오면서 처리되지만, 테스트 코드에서는 아무리 인증된 사용자를 만들어 준다고 하더라도 실제로 요청 Parameter에서는 email과 nickname값이 누락된체 넘어가기 때문에 실패하는게 당연한 것이다라고 생각이 들었습니다. 결국 이 테스트가 실패한 원인은 패스워드 수정 시 '현재 패스워드' 와 '현재 인증된 회원의 DB에 저장된 패스워드' 를 검사하는 로직을 포함시켰기 때문에 인 것 같은데요. 이런 상황에서도 테스트 코드를 성공시킬 방법이 있는지 조언 부탁드리겠습니다. 미리 답변 감사합니다.

  • thymeleaf
  • jpa
  • JPA
  • spring-boot
  • java
  • spring
Henu 댓글 1 좋아요 1 조회수 434

MemberForm의 패키징 위치?

미해결

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

강의 초반부에 MemberForm객체를 domain 패키지가 아닌 controller 패키지에 생성하시는 이유가 MemberForm 객체의 주 사용 클래스가 controller여서가 맞는지 궁금합니다..!

  • 패키지
  • JPA
  • spring
  • 웹앱
  • spring-boot
  • java
study4 댓글 1 좋아요 0 조회수 388

질문이 하나 있습니다

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

api gate way 서버에서 refresh를 해도 모든 서버에 다 적용이 되는건가요 ? 가령 ecommerce.yml파일에서 토큰 정보를 바꿨는데 api gate way 서버 api로 refresh를 해도 유저 서비스에 token도 바뀌는 건가요? 강의에서는 그렇게 나오긴했는데 맞는지 확시히 잘 몰라서 질문드립니다

  • JPA
  • spring-boot
  • spring-cloud
  • architecture
  • msa
  • Kafka
tnd05106 댓글 1 좋아요 0 조회수 374

메서드 호출 시 static import는 거의 필수적인 건가요?

해결됨

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

영상 보니 라이브러리에서 가져오는 메서드들을 static으로 빼시더라구요. 저는 하면서 느끼는게 어디서부터 온 메서드인지 헷갈리는 경우가 있더라구요. (ex) MockMvc 에서 가져오는 get 메서드나 RestDocumentationRequestBuilders.get 등등 다른 개발자들과 협업 시 static으로 빼는게 일반적인지 궁금합니다..!

  • vuejs
  • JPA
  • Spring Security
  • aws
  • spring-boot
JS Lee 댓글 1 좋아요 1 조회수 324

연관관계 매핑에 대해서 궁금한점이 있어서 질문드립니다.

미해결

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

안녕하세요. 연관관계 매핑에 있어서 일대다, 다대일, 다대다 관계를 정하는 기준이 따로 있는지가 궁금합니다. 예를 들어서, 제 생각에는 회원 - 주문이 관계에서 볼때 회원은 한번의 주문을 하므로 1:1 관계 주문 - 상품의 관계에서 볼때 여러 상품이 한번 주문되므로 1:n관계라고 생각됩니다. 그러면 member, order, orderItem, item 에서 member - order = 1:1 order - orderItem = 1:n orderItem - item = n:1 의 관계가 되는 것이라고 생각됩니다. 근데 현재가지의 수업 내용으로 볼 때에 member - order = 1:n order - orderItem = 1:n orderItem - item = n:1 으로 보고있는거 같은데 맞을까요??

  • jpa
  • JPA
  • java
준준 댓글 1 좋아요 0 조회수 319

패스워드 수정 시 '현재 패스워드'를 추가로 인증시키는 방법에 대한 질문입니다.

해결됨

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하세요. '패스워드 수정' 강의와 해당 강의에 등록된 질문( https://www.inflearn.com/questions/302863 )을 통해 회원의 패스워드 수정 시 '현재 패스워드'를 추가로 인증시키도록 코드를 변경하던 중 옳바른 개발 방법(?)에 대해 질문드립니다. 우선 패스워드 변경 View에서 '현재 패스워드'를 입력할 수 있도록 'input[type="password"]' 태그를 추가하고, PasswordForm(DTO 역할) 클래스에 'oldPassword'라는 프로퍼티를 추가했습니다. 이후 제가 하고자 하는 것은 패스워드 변경 유효성 검사를 하기 위해 생성했었던 PasswordFormValidator 클래스에서 View에서 입력받은 '현재 패스워드 값' 과 'DB에 저장된 회원의 현재 패스워드 값' 을 비교하여 일치하지 않는다면 Custom한 Error 메시지를 View로 전달해주고 싶은 상황입니다. 여기서 고민되는 것은 '패스워드 변경 Form' 요청 핸들러 메소드에서는 현재 인증된 회원 정보를 Model에 담아주고 있기 때문에 View쪽에 'input[type="hidden"]' 태그를 추가한 뒤 회원의 이메일, 닉네임 값을 설정하고 패스워드 변경 요청 시 PasswordForm 클래스에 그 값이 바인딩 될 수 있도록 아래와 같이 이메일, 닉네임 프로퍼티를 추가하여 PasswordFormValidator 클래스에서 DB에 저장된 회원의 현재 패스워드 값을 비교해서 틀린 경우 Error를 생성해 줄 것인가 아니면 이를 Validator가 아닌 '패스워드 변경 비즈니스 로직' 에서 할 것인가입니다. 만약, 비즈니스 로직에서 현재 비밀번호에 대한 유효성 검증을 진행하는 경우 PasswordForm 클래스에 굳이 필요 없는 email, nickname 프로퍼티를 추가하지 않아도 되는데요. 이 두가지 방법 중 어떤 경우가 좀 더 효율적인지, 제가 생각하지 못한 방법이 또 있는지(비슷한 상황들에 대한 노하우) 조언 부탁드리겠습니다. 미리 답변 감사합니다. 아래는 PasswordFormValidator을 통해 현재 패스워드 유효성 검사를 진행할 경우에 대한 예시 코드입니다.

  • java
  • thymeleaf
  • jpa
  • spring
  • JPA
  • spring-boot
Henu 댓글 1 좋아요 1 조회수 1662

생성자 에러 발생합니다.

미해결

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

안녕하세요. 잘 작동하고 있는데, 클래스명부분에 빨간줄과 함께 에러 문구가 뜨더라구요. 혹시 무시해도 되는 에러인지 궁금해서 질문드립니다. 아래에 소스코드, 발생에러, 테이블 생성 여부 올렸습니다. - 에러코드: Class 'Order' should have [public, protected] no-arg constructor - Order 코드: @Entity @Table(name="ORDERS") public class Order { @Getter @Setter @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ORDER_ID") private Long id; @Getter @Setter @Column(name="MEMBER_ID") private Long memberId; @Getter @Setter @Transient private int discountPrice; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) @Getter @Setter private OrderStatus status; public Order(Long memberId, Integer discountPrice) { this.memberId = memberId; this.discountPrice = discountPrice; } @Override public String toString() { return "Order{" + "memberId=" + memberId + ", discountPrice=" + discountPrice + '}'; } } - Orders Table log

  • jpa
  • JPA
  • java
준준 댓글 1 좋아요 0 조회수 676

안녕하세요. flush 관련 질문드립니다

해결됨

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

안녕하세요 만약 영속성 컨텍스트의 쓰기 지연 SQL 저장소에 insert 문이 5개가 있는 상태에서 flush 한다면 5번의 insert sql과 1번의 커밋으로 총 6번을 데이터베이스와 통신하는 건가요? 아니면 5개 전부 한꺼번에 날리고 + 1번의 커밋으로 총 2번을 데이터베이스와 통신하는 건가요? (아니면 JDBC 의 SQL 배치 기능을 이용해야만 총 6번의 통신을 2번의 통신으로 줄일 수 있는 건가요?) 감사합니다

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

인기 태그

인프런 TOP Writers

주간 인기글