묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
[공유]Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 부트 버전 3.2.0 사용 하시는분들 mybatis 의존성 추가하실때 이렇게 추가하시면 돼요..!
-
미해결
JPA 자식 엔티티를 저장/삭제하는 방법
안녕하세요.JPA 강의를 수강하고, 실무에서 적용해보던 중 의문점이 생겨 질문드립니다.강의에서는 엔티티의 변경 시에는 JPA의 Dirty Checking을 사용하라고 하셨는데요. 그렇다면 실제 JPA를 사용하는 실무에서도 새로운 하위 엔티티를 DB에 저장/삭제해야하는 경우에 상위 엔티티에서 하위 엔티티를 컬렉션에 add/remove 하는 방식을 통해 변경감지를 이용하여 저장하나요?(이 경우에 자식 엔티티를 add 하기 위해 모든 자식 엔티티들을 Lazy Loading 하는 비효율이 발생할 것 같아 질문 드립니다.) 설명하기 쉽게 코드와 함께 질문을 정리해보겠습니다.엔티티 코드는 다음과 같습니다. (편의 상 최대한 간추렸습니다.)@Entity public class Team { @Id private Long id; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); public void addMember(Member member) { this.members.add(member); <-- 자식 엔티티들을 모두 조회하는 LAZY LOADING 발생! } } @Entity public class Member { @Id private Long id; @JoinColumn(name = "team_id") @ManyToOne() private Team team; } <트랜잭션 계층> public void createMember(Member newMember) { Team team = teamRepository.findById(1L); team.addMember(newMember); <-- 자식 엔티티들을 모두 조회하는 LAZY LOADING 발생! } 이 경우 변경감지를 통해서 하위 엔티티를 저장할 수 있고, 더 객체지향 관점에 맞는 방법 같지만 Member 하나를 추가하기 위해 Team에 속한 모든 Member를 조회해오는 비효율이 발생할 것 같습니다. setTeam(team)으로 team과 연관관계를 맺어준 뒤, memberRepository.save(member)로 저장하면, 불필요하게 모든 member를 조회하지 않아도 될 것 같은데, 실무에서는 어떤 방법으로 엔티티를 저장/삭제하는 지 궁금해서 질문드립니다! 마찬가지로 연관관계 메서드도 자식엔티티와의 연관관계를 맺기 위해 자식엔티티들을 모두 LAZY LOADING (members.add(team) 시 자식 엔티티들을 모두 조회)해야 하나요? 감사합니다.
-
미해결실전! Querydsl
Library source does not match for class 에러
스프링 부트 3에서 작업 중입니다. 교안을 보고 build.gradle 설정했는데 유레카랑 오픈페인 의존성에 에러가 뜨더라구요.. 왜인지는 모르겠으나 구글링을 통해서 아래와 같이 설정했는데 이것과 관련이 있을까요? 구버전 query dsl이 심어진 건지,, 이 에러의 원인을 못 찾겠습니다.파일 설정을 src/main/아래로 둔 이유는 src파일 외에는 경로 설정을 따로해도 못 찾아서입니다 ㅜ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
JpaRepositoryV2 도입 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 이해한 내용을 설명하고, 이해가지 않은 내용을 질문하려 합니다. Spring Data JPA 기술을 이용하여 SpringDataJpaItemRepository를 구성했고, 해당 interface를 바로 ItemServiceV1에서 의존관계 주입하여 사용하고 싶다.하지만, 이미 ItemServiceV1은 ItemRepository interface를 주입받아 사용하고 있기 때문에 SpringDataJpaItemRepository interface를 사용하려면 ItemServiceV1에서 코드레벨에서의 수정이 필연적으로 일어나게 된다.(문제점 1)또한, SpringDataJpaItemRepository는 ItemRepository를 extends한 것이 아닌 JpaRepository를 extends한 것임.(문제점 2)따라서 이런 문제점들 때문에 JpaItemRepostioryV2 class를 도입하여 ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다. 위 내용처럼 서술했을 때 올바르게 서술한 것인지 궁금하고,2가지 이해가지 않는 부분에 대해서 질문하고 싶습니다.첫번째: 문제점2가 왜 문제인건지 잘 모르겠습니다.두번째: “ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다”에서 맞춘다가 정확히 어떤 것을 맞추는 것이라고 해야 표현 상 올바른 것인지 잘 모르겠습니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
JpaRepository - 기본적인 CRUD 기능
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]-> 강의 pdf 캡처본입니다. 해당 캡처본에서 JpaRepository를 인터페이스 상속받으면 기본적인 CRUD 기능을 사용할 수 있다고 하는데, '기본적인 CRUD 기능'이 의미하는 것이 'CrudRepository가 가지고 있는 CRUD 메서드'(save, delete 등등)를 의미하는 것인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@OneToMany 를 쓰는 이유??
생각해보니 양방향 연관관계를 써야 하는 근본적인 이유가 무엇이었나요? 예를 들면 member 와 team 이 다대일 이라면 ,team 에 @OneToMany 가 있을 텐데지금까지 강의에서 보았을떄는 그냥 주 Entity에서 @OneToMany 써서 연관관계 편의 메서드 만들어서 데이터 넣는 느낌? 이 다인 것같은데 근본적인 이유가 뭘까요. 이전 JPA 강의에서는 @OneToMany를 쓸때는 조회하는 것만 사용하라고 했었던 기억이 나는데 강의에서는 @OneToMany를 사용해서 조회해서 APi로 반환한다거나 그런 내용이 없었던 걸로 기억해요 . . .
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그가 안떠요
킹영한님 로그입니다..저의 로그입니다.위의 select부분이 안떠요...
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
테이블 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 위와 같이 Member.java를 작성하여 JpaMain.java를 실행하면 데이터베이스에서 MEMBER 테이블이 삭제되고,id를 Long형으로 선언하면 MEMBER테이블은 생성되지만 다음과 같이 id가 자동으로 주어지지 않고 null값이 들어가서 insert가 되지 않는 현상이 발생합니다.persistence.xml 사진도 올리겠습니다.강사님과 차이가 없는데 버전의 차이인가요? 도움 말씀 기다리겠습니다.
-
미해결실전! 스프링 데이터 JPA
매핑 테이블 값 변경
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. EntityAId와 EntityBId를 받아서 EntityAEntityB 매핑테이블의 a라는 변수의 값을 변경시키려면 어떻게 해야 할까요? EntityA와 EntityB를 각각 조회하고 EntityA의 EntityAEntityBList를 돌면서 EntityB인걸 찾으면 DB에 쿼리가 너무 많이 날아갈거같은데 이런 문제는 어떻게 해결 해야 하나 의문이 들어 질문 드립니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mapper.xml 에서 dtd 를 못찾습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mapper.xml 제일 윗줄인 DOCTYPE 부분 제일 뒤쪽 dtd 주소에 빨간줄이 그어지면서 cannot find dtd file 또는 해당 dtd 파일을 받는중에 오류가 났다고 나오는데요, 덕분에 <mapper>, <select>등 전부 빨간줄이 그어집니다 ㅠ 모든 dtd 파일을 못가져오나 싶었는데, mybatis-context.xml의 config dtd는 또 잘 가져오구요... 어떤것 때문에 mapper dtd를 못가져오는건지 모르겠습니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2에 테이블 생성이 안됩니다.
00:37:51.408 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.MemberRepositoryTest]: MemberRepositoryTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.00:37:51.499 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.MemberRepositoryTest00:37:51.652 [main] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.6)2023-12-07T00:37:51.909+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : Starting MemberRepositoryTest using Java 20.0.2.1 with PID 12984 (started by 장민주 in C:\Users\장민주\Downloads\토이프로젝트\jpashop\jpashop)2023-12-07T00:37:51.910+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : No active profile set, falling back to 1 default profile: "default"2023-12-07T00:37:52.453+09:00 INFO 12984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2023-12-07T00:37:52.473+09:00 INFO 12984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 12 ms. Found 0 JPA repository interfaces.2023-12-07T00:37:52.903+09:00 INFO 12984 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2023-12-07T00:37:52.946+09:00 INFO 12984 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.13.Final2023-12-07T00:37:52.947+09:00 INFO 12984 --- [ main] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer2023-12-07T00:37:53.169+09:00 INFO 12984 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2023-12-07T00:37:53.192+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2023-12-07T00:37:53.384+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:9f0efac1-9002-48e8-bf24-577a044a16d9 user=SA2023-12-07T00:37:53.386+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2023-12-07T00:37:54.134+09:00 INFO 12984 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2023-12-07T00:37:54.146+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : drop table if exists member cascade 2023-12-07T00:37:54.148+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : drop sequence if exists member_seq2023-12-07T00:37:54.152+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : create sequence member_seq start with 1 increment by 502023-12-07T00:37:54.156+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : create table member ( id bigint not null, username varchar(255), primary key (id) )2023-12-07T00:37:54.162+09:00 INFO 12984 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2023-12-07T00:37:54.343+09:00 WARN 12984 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2023-12-07T00:37:54.706+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : Started MemberRepositoryTest in 3.058 seconds (process running for 3.74)OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2023-12-07T00:37:55.191+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : select next value for member_seq2023-12-07T00:37:55.294+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : insert into member (username,id) values (?,?)2023-12-07T00:37:55.295+09:00 TRACE 12984 --- [ main] org.hibernate.orm.jdbc.bind : binding parameter [1] as [VARCHAR] - [memberA]2023-12-07T00:37:55.296+09:00 TRACE 12984 --- [ main] org.hibernate.orm.jdbc.bind : binding parameter [2] as [BIGINT] - [1]2023-12-07T00:37:55.304+09:00 INFO 12984 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2023-12-07T00:37:55.305+09:00 INFO 12984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2023-12-07T00:37:55.307+09:00 INFO 12984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.Process finished with exit code 0 이런식으로 뜨면서 테이블 생성이 안되는데 어떻게 해야 될까요? 오류 검색해서 계속 따라해보는데 잘 안됩니다 ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Spring Boot 2.7.17 Java 11 버전 빌드 성공 한 build.gradle
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]빌드하다 머리털 빠질뻔해서 공유합니다plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE'}group = 'jpabook'version = '0.0.1-SNAPSHOT'java { sourceCompatibility = '11'}ext["hibernate.version"] = "5.6.5.Final"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 'org.springframework.boot:spring-boot-starter-validation' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5', version: '2.16.0' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'}tasks.named('test') { useJUnitPlatform()}//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거clean { delete file('src/main/generated')}
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
강의와 관련있는 내용은 아니지만 자동으로 적합한 타입을 찾아주는 방법이 궁금합니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의내용에 관한 질문은 아닙니다만강사님 강의를 쭉보면서 궁금했던 것입니다.강사님은 사진처럼 어떻게 적합한 타입을 자동으로 찾아주는지 궁급합니다. 맵핑할때도 자동으로 찾아주던데 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
윈도우 shift + f6 을 해도 적용이 안돼요
shift + f6 을 해도 서비스에 적용이 안돼요 구글링해봐도아래와 같은 글 뿐인데 저는 안되네요 ㅠㅠ 뭐가 문제일까요? 맥 아닙니다!! 윈도우에요!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
내부클래스 접근지정자
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]DTO 클래스를 내부클래스로 만들었는데, 접근지정자를 public으로 지정해주지 않으면 Class 'CreateMemberResponse' is exposed outside its defined visibility scopeClass 'CreateMemberRequest' is exposed outside its defined visibility scope 이런식으로 경고가 발생합니다.강의에서는 public으로 지정하지 않아도 경고창이 뜨지 않았는데 왜그런걸까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
source-connect 오라클 적용 오류
mariadb가 아닌 oracle로 진행을 해보고 있는데 mariadb의 auto_increment 대신 oracle로 seq를 만들어 자동 증가하게 했습니다. 이렇게 적용을 하니 connector 에서 이런 오류를 주는데 오라클로 할 때는 설정이 많이 다른지 질문드립니다!!! ERROR [my-oracle-connect|task-0] WorkerSourceTask{id=my-oracle-connect-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:196) org.apache.kafka.connect.errors.ConnectException: Scale of Decimal value for incrementing column must be 0 at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractDecimalId(TimestampIncrementingCriteria.java:283) at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractOffsetIncrementedId(TimestampIncrementingCriteria.java:268) at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractValues(TimestampIncrementingCriteria.java:208) at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.extractRecord(TimestampIncrementingTableQuerier.java:230) at io.confluent.connect.jdbc.source.JdbcSourceTask.poll(JdbcSourceTask.java:418) at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.poll(AbstractWorkerSourceTask.java:452) at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.execute(AbstractWorkerSourceTask.java:346) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244) at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.run(AbstractWorkerSourceTask.java:72) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) [2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] Stopping JDBC source task (io.confluent.connect.jdbc.source.JdbcSourceTask:354) [2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] Closing resources for JDBC source task (io.confluent.connect.jdbc.source.JdbcSourceTask:366) [2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] [Producer clientId=connector-producer-my-oracle-connect-0] Closing the Kafka producer with timeoutMillis = 30000 ms. (org.apache.kafka.clients.producer.KafkaProducer:1297) [2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Metrics scheduler closed (org.apache.kafka.common.metrics.Metrics:693) [2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Closing reporter org.apache.kafka.common.metrics.JmxReporter (org.apache.kafka.common.metrics.Metrics:697) [2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Metrics reporters closed (org.apache.kafka.common.metrics.Metrics:703) [2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] App info kafka.producer for connector-producer-my-oracle-connect-0 unregistered (org.apache.kafka.common.utils.AppInfoParser:83) { "name": "my-oracle-connect", "config" : { "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url":"jdbc:oracle:thin:@localhost:1521:orcl", "connection.user":"test", "connection.password":"test", "mode": "incrementing", "incrementing.column.name":"ID", "table.whitelist":"USERS", "topic.prefix" : "my_oracle_", "tasks.max" : "1" } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
hibernate.hbm2ddl.auto가 안먹어요
안녕하세요.hibernate.hbm2ddl.auto가 처음에는 create 가 잘 작동했습니다. 그런데 table 생성되고 난 뒤 update 로 age 필드 추가 시도했는데 alter문이 실행되지 않고 필드 추가가 일어나지 않아서 테이블는 당연히 생성되지 않았는데 그 이후로 select 문에서는 추가된 필드 age가 조회되는 걸 확인 할 수 있었어요. 이상해서 validation 처리하니, 다음[1]과 같이 에러가 났구요. create 로 변경 후 다시 실행하려고 하니 drop 도 안되고 여전히 동일한 select만 실행됩니다. 인텔리제이를 껐다 다시 켜도 동일합니다. 어떻게 처리하면 좋을까요 ? main.classpackage jpaBasic; import javax.persistence.*; import java.util.List; public class Main { public static void main(String[] args) { //EntityMangerFactory 객체 : 웹 서비스 당 한개 생성하는 개념, 디비당 한개 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //EntityManager 객체 : 고객 요청이 들어올 때 사용 했다가 사용 후 삭제 ( 1회성 ) EntityManager em = emf.createEntityManager(); //EntityTransaction 객체 : jpa 데이터 변경은 무조건 트랜잭션 안에서 실행 해야 한다. EntityTransaction tx = em.getTransaction(); tx.begin(); try{ // Jpql : jpa에서 지원하는 객체 지향 SQL // 일반 쿼리문과 비슷하지만 조회하는 대상이 테이블이 아닌 Member 의 객체를 조회 한다. List<Member> results = em.createQuery("select m from Member as m", Member.class) .getResultList(); for (Member member : results){ System.out.println("member.id " + member.getId()); System.out.println("member.name " + member.getName()); } tx.commit(); }catch (Exception e){ tx.rollback(); }finally { em.close(); } emf.close(); } }member.class package jpaBasic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity public class Member { @Id private Long id; @Column(name="USER_NM", unique = true, length = 10) private String name ; private int age ; public Member() { } public Member(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } pesistence.xml<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/jpashop"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>[1] Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: hello] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1016) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:942) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpaBasic.Main.main(Main.java:9) Caused by: java.lang.IllegalArgumentException: Unrecognized legacy `hibernate.hbm2ddl.auto` value : validation at org.hibernate.tool.schema.Action.interpretHbm2ddlSetting(Action.java:181) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator$ActionGrouping.interpret(SchemaManagementToolCoordinator.java:489) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:52) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) ... 4 more
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의록 파일 열기 오류
안녕하세요? 수강신청한 후에 강의록을 다운로드했는데 PDF 파일이 열리지 않습니다.혹시 DRM이 걸려 있거나 다른 이슈가 있는 건 아닐지요?아니면 유사한 문의가 있었는지 확인해 주시면 감사하겠습니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@JsonIgnore
@JsonIgnore의 위치는 양방향 연관관계 중 아무곳이나 적어줘도 되는 건가요??
-
해결됨
인터페이스 구현 문제
데이터베이스 연동해서 db의 데이터를 조회하고 싶은데 문제가 있어서 질문드립니다.MemberRepository(인터페이스)package com.project.web.repository; import com.project.web.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; import java.util.Optional; public interface MemberRepository extends JpaRepository<Member,Long>{ Optional<Member> findByIdAndPw(String id, String pw); } JpaMemberRespositorypackage com.project.web.repository; import com.project.web.domain.Member; import org.springframework.data.domain.Example; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.transaction.Transactional; import java.util.Optional; public class JpaMemberRepository implements MemberRepository { private final EntityManager em; public JpaMemberRepository(EntityManager em) { this.em = em; } @Override Optional<Member> findByIdAndPw(String id, String pw){ return null; }; } 이렇게 작성했는데 Class 'JpaMemberRepository' must either be declared abstract or implement abstract method 'findAll()' in 'JpaRepository이런 오류가 뜹니다. 함수를 implements하라는건 알겠는데 이렇게 많은 함수를 오버라이딩 하라고 뜨네요.. 제가 인터페이스에 작성한 내용만 작성하고 싶은데 뭐가 문제 일까요?