inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'root'@'localhost' (using password: YES)") 오류

해결됨

실전! FastAPI 입문

OS: macOS python 3.10 버전을 사용하고 있고, sqlalchemy 2.0.19, pymysql 1.1.0 등등 최신 패키지 사용중입니다. from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1/todos" engine = create_engine(DATABASE_URL, echo=True) SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine) connection.py 는 위와 같이 동일하게 작성했고, session.scalar(select(1)); 실행시 아래와 같은 오류가 발생하여 더 이상 진행을 할 수가 없습니다. Traceback (most recent call last): File "/Users/someone/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/232.8660.197/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcode coro = func() File "<input>", line 1, in <module> File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2296, in scalar return self._execute_internal( File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2131, in _execute_internal conn = self._connection_for_bind(bind) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1998, in _connection_for_bind return trans._connection_for_bind(engine, execution_options) File "<string>", line 2, in _connection_for_bind File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go ret_value = fn(self, *arg, **kw) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1123, in _connection_for_bind conn = bind.connect() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 3264, in connect return self._connection_cls(self) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 147, in __init__ Connection._handle_dbapi_exception_noconnection( File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2426, in _handle_dbapi_exception_noconnection raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ self._dbapi_connection = engine.raw_connection() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 3288, in raw_connection return self.pool.connect() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 452, in connect return _ConnectionFairy._checkout(self) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 1267, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 716, in checkout rec = pool._do_get() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/impl.py", line 169, in _do_get with util.safe_reraise(): File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 147, in __exit__ raise exc_value.with_traceback(exc_tb) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/impl.py", line 167, in _do_get return self._create_connection() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 393, in _create_connection return _ConnectionRecord(self) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 678, in __init__ self.__connect() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 902, in __connect with util.safe_reraise(): File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 147, in __exit__ raise exc_value.with_traceback(exc_tb) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/pool/base.py", line 898, in __connect self.dbapi_connection = connection = pool._invoke_creator(self) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/create.py", line 637, in connect return dialect.connect(*cargs, **cparams) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 615, in connect return self.loaded_dbapi.connect(*cargs, **cparams) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/connections.py", line 358, in __init__ self.connect() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/connections.py", line 664, in connect self._request_authentication() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/connections.py", line 976, in _request_authentication auth_packet = _auth.caching_sha2_password_auth(self, auth_packet) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/_auth.py", line 267, in caching_sha2_password_auth pkt = _roundtrip(conn, data) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/_auth.py", line 120, in _roundtrip pkt = conn._read_packet() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/connections.py", line 772, in _read_packet packet.raise_for_error() File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "/Users/someone/.pyenv/versions/fastapi-env/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'root'@'localhost' (using password: YES)") (Background on this error at: https://sqlalche.me/e/20/e3q8) Check the PassWord Hashing Method: If the MySQL server is using caching_sha2_password but the client (like PyMySQL) doesn't support it, it can give rise to such issues. You can switch the MySQL user's password hashing method to mysql_native_password . 이런 글도 있어서 따라하고 새로 비밀번호를 todos 로 넣어줬는데도 마찬가지네요. 더 참고할만한 내용이 있을까요?

  • python
  • 리팩토링
  • orm
  • FastAPI
  • pytest
댓글 1 좋아요 2 조회수 2357

진짜 객체지향과 테스트하기 쉬운 코드를 위헤서는 jpa가 의미없는게 아닌가하는 생각이 들어요

미해결

Java/Spring 주니어 개발자를 위한 오답노트

이전에 혼자 ddd, 헥사고날 아키텍처를 공부하면서 느꼈던게 객체지향적인 코드 + 테스트하기 용이한 코드를 작성하기 위해서는 결국 domain layer와 persistence layer의 분리가 필수적인데 jpa entity와 domain entity를 완전히 분리했을 때 JPA가 mybatis나 jdbc template를 사용하는 것과 비교해 가지는 강점이 있는지 잘 모르겠습니다.. 그나마 jpa entity와 domain entity를 분리하지 않는다면 어떻게든 온몸 비틀기로 그나마 테스트하기 용이하고 객체지향스러운 코드를 작성해볼 수는 있지만 결국 복잡한 로직에서는 쿼리 때문에 문제가 생기고 ㅜ 지식 공유자님께서는 이 문제에 대해 어떻게 생각하시나요?

  • java
  • spring
  • 객체지향
  • 소프트웨어-테스트
euni 댓글 2 좋아요 2 조회수 1879

동시성제어

미해결

실습으로 배우는 선착순 이벤트 시스템

안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
봄봄봄 댓글 2 좋아요 0 조회수 922

c. Collection,Map 질문

해결됨

Java/Spring 주니어 개발자를 위한 오답노트

Collection.Map의 Good 케이스를 알 수 있을까요? 맵을 사용할 때 맵 안에 맵이 있고 이런 형태를 사용하지 않는게 좋은건지 아니면 따로 dto로 변환해서 사용해야하는건지 구분이 안 가서 질문 드립니다 ! 지정된 scope를 넘나들지 않는다는 것도 이해가 가지 않습니다 ㅠㅠ 조금만 더 쉽게 설명 붙여주시면 감사드리겠습니다!

  • java
  • spring
  • 객체지향
  • 소프트웨어-테스트
HOYA 댓글 2 좋아요 1 조회수 551

select 쿼리없이 dto 만들지 않은 이유

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

강의에서는 아래와 같이 select 쿼리를 이용해 업데이트 된 회원을 조회후 response로 전달해 주었는데 @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id,request.getName()); Member findMember = memberService.findOne(id); return new UpdateMemberResponse(findMember.getId(), findMember.getName()); } 아래와 같이 하지 않은 이유가 있을까요?? @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); }

  • java
  • spring
  • spring-boot
  • jpa
dlwogns3413 댓글 1 좋아요 0 조회수 431

외부 세계에 영향을 주는 코드

미해결

Practical Testing: 실용적인 테스트 가이드

관측할 때마다 다른 값의 의존하는 코드는 즉, 현재시각, 랜덤 값 등등은 이해 하겠는데 외부 세계에 영향을 주는 코드는 어떤 건지 이해가 잘 안되서요. 혹시 간단한 예제를 들어주실수 있으실까요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
dev 댓글 2 좋아요 0 조회수 596

구상클래스에서 인터페이스 변수를 선언한 이유가 혹시 다형성과 관련이 있나요?

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

클래스의 상속과 관련된 다형성은 부모객체로 인스턴스를 생성하여 부모클래스의 메소드와 자식클래스 메소드 2가지를 업/다운캐스팅하여 자유롭게 호출할 수 있지만, 단일상속이라는 한계 때문에 다른 부모클래스의 메소드는 호출할 수가 없잖아요? 그래서 인터페이스가 존재하는 이유구요. 마찬가지로, 인스턴스를 생성할 때 다형성을 활용하여 인터페이스 객체(부모 객체)로 생성할 수는 있지만, 이것은 ISP(Interface Segregation Principle)원칙에 따라 detect(), report() 2개의 메소드를 호출하려면 Detectable, Reportable 객체 2개를 생성해야 하기 때문에 메모리가 효율적으로 관리되지 못하는거구요. 따라서 구상클래스인 FactoryCam에서 인터페이스 변수를 직접 생성하고 setter함수로 필요한 인터페이스 변수를 주입한 다음(Dependency Injection) , 주입당한 객체는 인터페이스에 의존하기 때문에(Reportable, Detectable) 동시에 기능이 다른 2가지 메소드를 호출할 수 있는거구요.(Dependency Inversion Principle) ... 과정을 이해하였지만 말로 풀어내니까 굉장히 장황하군요 사실 이 부분은 인터페이스 문법이라기보다는 디자인 패턴과 관련이 있지 않나싶습니다.

  • java
  • 객체지향
  • 다형성
  • 인터페이스
Ambition 댓글 2 좋아요 0 조회수 547

안녕하세요 질문있습니다.

미해결

Do it! 알고리즘 코딩테스트 with JAVA

방향 그래프 무방향 그래프에 따라서 자료구조에 자료를 저장하는 방법이 다르다고 하셨습니다. 그런데 지금 이 문제에서는 방향그래프 아닌가요?? 간선,엣지들을 보면 모두 방향이 있는 거 같은데, 왜 무방향그래프를 저장할 때처럼 arraylist에 값을 저장하는지 모르겠습니다.

  • java
  • 코딩-테스트
  • 알고리즘
댓글 0 좋아요 0 조회수 351

테이블 드랍이 안됩니다..

미해결

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

실전 예제 4를 하고 있는데 create로 설정하면 메인메서드 실행할 때마다 테이블 드랍되고 실행되어야하는데 아래와 같은 오류가 자꾸 발생하면서 실행이 안되는데 왜그럴까요 ㅠㅠ 수동으로 데이터베이스에서 드랍하고 실행하거나 update 등으로만 설정해야 잘 작동되는데 왜그럴까요... /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=49362:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/hwang-gyuhyeog/Desktop/JPA/1.자바 ORM 표준 JPA 프로그래밍-기본편/jpashop/target/classes:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/hibernate-entitymanager/5.3.10.Final/hibernate-entitymanager-5.3.10.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/hibernate-core/5.3.10.Final/hibernate-core-5.3.10.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/javassist/javassist/3.23.2-GA/javassist-3.23.2-GA.jar:/Users/hwang-gyuhyeog/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar:/Users/hwang-gyuhyeog/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar:/Users/hwang-gyuhyeog/.m2/repository/net/bytebuddy/byte-buddy/1.9.5/byte-buddy-1.9.5.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar jpabook.jpashop.JpaMain 8월 08, 2023 10:39:56 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...] 8월 08, 2023 10:39:56 오후 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core { 5.3.10.Final } 8월 08, 2023 10:39:56 오후 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 8월 08, 2023 10:39:57 오후 org.hibernate.annotations.common.reflection.java .JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations { 5.0.4.Final } 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp:// localhost/~/jpashop ] 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {user=sa} 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 8월 08, 2023 10:39:57 오후 org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect Hibernate: drop table Category if exists Hibernate: drop table CATEGORY_ITEM if exists Hibernate: drop table Delivery if exists Hibernate: drop table Item if exists Hibernate: drop table Member if exists Hibernate: drop table OrderItem if exists Hibernate: drop table ORDERS if exists Hibernate: drop sequence if exists hibernate_sequence Hibernate: create sequence hibernate_sequence start with 1 increment by 1 8월 08, 2023 10:39:57 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@7f5b9db] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Category if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Category if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "CATEGORY" because "FKJIP0OR3VEMIXCCL6VX0KLUJ03" depends on it; SQL statement: drop table Category if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Delivery if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Delivery if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "DELIVERY" because "FKDBS21F1YI0COXY9Y0KXW4G9JF" depends on it; SQL statement: drop table Delivery if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Item if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Item if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "ITEM" because "FK75MRPPRV8OIGH00Y92TIBW7ID, FK2SRBE8WJBANR4VTKRSB8ATQ7O, FKQQWSWM36Y8UQOH9EMTORUOXCV, FKABGE9EQALSPCEJIJ53RAT7PJH" depends on it; SQL statement: drop table Item if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Member if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Member if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "MEMBER" because "FKH0DB7KQR88ED8HQTCQW3JKCIA" depends on it; SQL statement: drop table Member if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5c723f2d] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "CATEGORY" already exists; SQL statement: create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "DELIVERY" already exists; SQL statement: create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEM" already exists; SQL statement: create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" already exists; SQL statement: create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) 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 ) 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 jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Constraint "FK8TEPC1QKMLUODSPG6TNLIWHIT" already exists; SQL statement: alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Cat [90045-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate( AlterTableAddConstraint.java:109 ) at org.h2.command.ddl.AlterTableAddConstraint.update( AlterTableAddConstraint.java:72 ) at org.h2.command.ddl.AlterTable.update( AlterTable.java:46 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more Hibernate: create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) ) Hibernate: create table CATEGORY_ITEM ( CATEGORY_ID bigint not null, ITEM_ID bigint not null ) Hibernate: create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) ) Hibernate: create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) ) Hibernate: create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) ) Hibernate: create table OrderItem ( ORDER_ITEM_ID bigint not null, ITEM_ID bigint, ORDER_ID bigint, primary key (ORDER_ITEM_ID) ) Hibernate: create table ORDERS ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), DELIVERY_ID bigint, MEMBER_ID bigint, primary key (ORDER_ID) ) Hibernate: alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category Hibernate: alter table CATEGORY_ITEM add constraint FKf1uerpnmn49vl1spbbplgxaun foreign key (ITEM_ID) references Item Hibernate: alter table CATEGORY_ITEM add constraint FKjip0or3vemixccl6vx0kluj03 foreign key (CATEGORY_ID) references Category Hibernate: alter table OrderItem add constraint FKabge9eqalspcejij53rat7pjh foreign key (ITEM_ID) references Item Hibernate: alter table OrderItem add constraint FKk7lmf97wukpquk6d8blxy5neq foreign key (ORDER_ID) references ORDERS Hibernate: alter table ORDERS add constraint FKdbs21f1yi0coxy9y0kxw4g9jf foreign key (DELIVERY_ID) references Delivery Hibernate: alter table ORDERS add constraint FKh0db7kqr88ed8hqtcqw3jkcia foreign key (MEMBER_ID) references Member 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@30f74e79' Hibernate: call next value for hibernate_sequence Hibernate: /* insert jpabook.jpashop.domain.Book */ insert into Item (name, price, stockQuantity, author, isbn, DTYPE, ITEM_ID) values (?, ?, ?, ?, ?, 'Book', ?) 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 23505, SQLState: 23505 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.ITEM(ITEM_ID) ( /* key:1 */ 'Book', CAST(1 AS BIGINT), 'dd', 0, 0, NULL, NULL, 'abc', NULL, NULL, NULL)"; SQL statement: /* insert jpabook.jpashop.domain.Book */ insert into Item (name, price, stockQuantity, author, isbn, DTYPE, I [23505-200] 8월 08, 2023 10:39:57 오후 org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure ERROR: HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement] 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp:// localhost/~/jpashop ] Process finished with exit code 0

  • java
  • jpa
댓글 1 좋아요 0 조회수 404

순수 자바 테스트

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 내에서 스프링 없이 테스트 코드를 짜는 것이 좋다고 하신 것을 보고 실제로 테스트 코드는 스프링을 의존하지 않고 짜는 것이 무엇인지 궁금해졌습니다. 실제로 강의에서 작성하는 내용 중에, 어느 부분이 스프링에 의존해서 테스트를 한 것인지, 또한 그러한 스프링 의존 테스트를 순수 자바 기반의 테스트로 바꾸며 어떤 식으로 나오게 될지 궁금합니다. 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김예은 댓글 1 좋아요 0 조회수 501

현업에서 환경변수 같은 건 어떻게 관리하시나요?

해결됨

실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍

민감한 URL 이라든지 환경변수를 통해 사용하고 싶은게 있을 때 강사님께서는 어떻게 관리하시는지 궁금합니다. 그냥 UNIX 환경에서 export url = http://example.com 이런식으로 하고 os 모듈을 통해 쓰고있는데, 더 보안상 좋은 방법이 있을까요?

  • python
  • django
  • bootstrap
  • rest-api
  • drf
댓글 1 좋아요 1 조회수 403

model.addAttribute 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. model.addAttribute 하고 안에 값 넣었는데 이게 안먹네요 어떻게해야 해결할 수 있을까요? import 구문 따로 넣는게 있나요?

  • java
  • spring
  • mvc
  • spring-boot
김성현 댓글 1 좋아요 0 조회수 2285

generated 폴더와 Q class import에 관한...

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 내용] 여기에 질문 내용을 남겨주세요. 1. Tasks - other에 compileQuerydsl이 없어서 compileJava를 눌러서 했는데 괜찮은지 ?? 2.강사님과 다르게 build /generated 이렇게 생성되어도 문제가 없는지? 저런식으로 Q파일들이 생성되었는데 import가 안되고 사용이 안되는 이유 알려주시면 감사하겠습니다.

  • java
  • spring
  • spring-boot
  • jpa
박환영 댓글 1 좋아요 0 조회수 1055

섹션 2의 단위테스트 세분화하기에서요 !

미해결

Practical Testing: 실용적인 테스트 가이드

public void add(Beverage beverage, int count) { if (count <= 0){ throw new IllegalArgumentException("음료는 1잔 이상 주문하실 수 있습니다."); } for (int i = 0; i < count; i ++) { beverages.add(beverage); } } // 위 코드랑 아래 테스트에 대해서 이해가 안되서요 ! @Test void add() { CafeKiosk cafeKiosk = new CafeKiosk(); Beverage latte = new Latte(); cafeKiosk.add(latte); int expectedSize = 1; int actuallySize = cafeKiosk.getBeverages().size(); String expectedName = "라떼"; String actuallyName = cafeKiosk.getBeverages().get(0).getName(); Assertions.assertThat(actuallySize).isEqualTo(expectedSize); Assertions.assertThat(actuallyName).isEqualTo(expectedName); } @Test void addSeveralBeverages() { CafeKiosk cafeKiosk = new CafeKiosk(); Beverage latte = new Latte(); cafeKiosk.add(latte, 2); Assertions.assertThat(cafeKiosk.getBeverages().get(0)).isEqualTo(latte); Assertions.assertThat(cafeKiosk.getBeverages().get(1)).isEqualTo(latte); } 저렇게 add()에 count를 넣어버리면 add()테스트에서 cafeKiosk.add(latte, 1)으로 수정하던지 해야 에러가 안나는 거 아닌가요? 강의에서는 그냥 진행하셔서 여쭤봅니다!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
무자비한 낭만주먹 댓글 1 좋아요 0 조회수 554

OrderResponse에 List<ProductResponse> 를 추가하는게 적절한가 에 대해 의문이 듭니다

미해결

Practical Testing: 실용적인 테스트 가이드

안녕하세요 강사님! 질문 드리기에 앞서 항상 좋은 강의 감사드립니다! 제가 강의를 수강하면서 의아한 부분이 있었는데요, 바로 OrderResponse에 List<ProductResponse> 를 추가하신 부분 입니다. 이에 따라 OrderResponse의 of() 메소드 안에서 order.getOrderProducts() 를 호출할 수 밖에 없게 되었는데요, 이때 페치조인을 하지 않는 이상 쿼리가 나가게 될 것 같습니다 (지연로딩) 저는 바로 이 측면이 개인적으로 잘못되었다 고 생각하는데요, JPA는 어떤 쿼리가 어느 타이밍에 나가는지를 파악하기 어려워서, 최대한 이 측면을 명확하게 해주는게 필요하다고 생각합니다. 그래서 저의 경우는 서비스 로직에서 사용되는 repository 메소드 들에서만 쿼리가 나가는 경우로 명확하게 제한을 해주는 편 인데요, 이런식으로 서비스 로직이 아닌(정확히는 그 안에서 사용되는 repository메소드) 다른 곳에서 지연로딩으로 인해 쿼리가 나간다면 - 어느타이밍에 어떤 쿼리가 나가는지를 코드만 보고 명확하게 파악할 수 없게 된다고 생각합니다. 그래서 결론적으로 저는 OrderResponse 안에서 order.getProducts()를 호출하여 List<ProductResponse>를 만드는게 적절하지 않다고 생각하는데요, 이부분에 대해 강사님의 생각을 말씀해주시면 감사하겠습니다! 감사합니다.

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
요니 댓글 2 좋아요 0 조회수 559

테스트를 위하여 , OrderService의 createOrder의 파라미터로 registerDateTime을 추가한 측면

미해결

Practical Testing: 실용적인 테스트 가이드

안녕하세요! 먼저 항상 좋은 강의 감사드립니다!\ 다름이 아니라, 저는 제목대로 , 테스트를 위해서 OrderSerivce의 createOrder의 파라미터로 registerDateTime을 파라미터로 받게 추가한 측면이 개인적으로 적절하지 않다고 생각 하여 질문글을 작성하였습니다. 파라미터를 사용하는 이유는 결국 외부로 부터 값을 받는다는 전제가 깔려있다고 생각하고, 이런 측면에서 보았을 때 요청값으로 시간 값을 받는다고 생각할 수 있습니다. 그렇게 생각을 했을때 개인적으로 2가지 정도의 의아한 점이 발생한다고 생각합니다. 클라이언트로 부터 넘겨받는 시간이 과연 등록 시간이라고 할 수 있는가? (network delay가 있을것 이기 때문) 그렇다고 Controller에서 now() 를 호출한 시간이라는 일종의 고정값을 받을거면 - 파라미터를 선언하는 의미가 있는가? 결론적으로 저는 createOrder의 파라미터로 registerDateTime을 선언하는것이 적합하지 않다고 생각합니다. 하지만 우리의 경우는 tdd로써 테스트를 위해 외부로 값을 추출하였는데 - 이러한 문제가 발생하였으므로, tdd 개발론이 과연 적절한 production code를 만드는게 기여하는가? 라는 측면에서 의문이 듭니다. 나아가 당연히 저의 미숙한 탓 이겠지만, 강의를 진행해주신 방식대로 온전한 비즈니스 로직을 작성하지 않고 , 테스트 - 개발 - 테스트 - 개발... 이런 플로우로 개발을 하는것이 과연 도움이 되는가? 도 조금 의아한 것 같습니다. 어쨌든 여기까지는 저의 순수한 개인적 생각인데요, 이런 부분에 대해서 강사님 께서는 어떻게 생각하시는지 말씀해주시면 정말 감사하겠습니다!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
요니 댓글 2 좋아요 -2 조회수 495

TypeNotPresentException

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 MemberServiceIntegrationTest 에서 회원가입을 run하는 과정중에, 처음에는 NullPointerException 이 뜨다가, 코드수정만 했는데 이제는 아얘 실행조차 안되고 다음과 같이 오류가 뜹니다 __________________ 위의 오류를 해결하려고 아래와 같이 src/java/main을 소스루트로 지정했습니다 캐쉬삭제도 해보고 이것저것 해봤는데 실행조차 안됩니다 어떻게 고쳐야하나요 ... ㅠㅠ 도와주세요 ..

  • java
  • spring
  • mvc
  • spring-boot
study 댓글 2 좋아요 0 조회수 417

BaseEntity 조작이 필요할 때 테스트 코드 작성 방법

해결됨

Practical Testing: 실용적인 테스트 가이드

안녕하세요. 회원 탈퇴 기능을 개발하고 있습니다. 탈퇴하면 Users 테이블의 use_yn 값을 N 변경 후 14일 지나면 스케줄러로 관련 데이터를 다 지우도록 개발하려고 합니다. 스케줄러 작업 중에 있는데 테스트코드를 짜다가 막혀서요. 탈퇴 누를 때 use_yn 값을 변경하기 때문에 BaseEntity에 있는 upd_date가 알아서 변경일을 update 합니다. 근데 그래서 테스트 코드에서 upd_date 조작을 할 수가 없네요 ㅠㅠ 14일 지난 케이스로 만들어보려고 합니다. 스케줄러라 스케줄러에 파라미터를 보낼 수도 없고 이 경우에는 어떻게 테스트 하나요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
ILoveBackEnd 댓글 2 좋아요 0 조회수 664

부동산 매물 강좌 관련 문의

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요! 강사님 강의를 끝까지 다 수강하였습니다. 너무 도움이 많이 되었습니다. 감사합니다. 부동산 매물 강의에 대한 공지를 보고 메일로 문의 드렸는데 아직 피드백이 오지 않아 이렇게 질문글로 문의를 드리게 되었습니다! 메일 문의 한 번만 확인 부탁드립니다. 감사합니다!

  • python
  • 웹-크롤링
댓글 1 좋아요 0 조회수 275

kotlin closure 는 별도의 메모리 공간에 데이터를 복사해서 가지고 있는게 맞을까요?

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

Java 에서 Final 만 사용할 수 있는게 외부 변수가 메모리에서 해제 되었을 경우, 가비지를 참조할 수 있는 것을 방지하기 위해서로 알고 있는데 코틀린은 이게 가능한게 아예 메모리를 통째로 떠와서 그런걸까요? ㅎㅎ 강의 영상에서 포획한다 라고 표현하신게 그런 의미 같아요!

  • java
  • kotlin
  • 객체지향
목동 개발자 댓글 1 좋아요 2 조회수 408

인기 태그

인프런 TOP Writers

주간 인기글