묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Database may be already in use: null. 에러 발생 ㅠㅠ
영한님 안녕하세요! 어제 답변주시거 해결하고 다음강의 듣는 중에 또 문제가 생겼습니다 ㅠ_ㅠ 1. 터미널에서 ./h2.sh 명령어로 실행 2. localhost:8082로 접속 3. member 테이블생성 4. 강의를 따라가면서 아래 코드만 작성 후 실행했는데, EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");EntityManager em = emf.createEntityManager();Member member = new Member();em.persist(member);em.close();emf.close(); 강의처럼 ids for this class must be manullay~ 이 에러가 아닌 아래와 같은 에러가 나타납니다 ㅠㅠ 뭐가 문제일까요?? ERROR: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-200] Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935) 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 hellojpa.JpaMain.main(JpaMain.java:9) Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:118) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:363) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:282) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:260) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:401) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:112) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:100) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ... 14 more Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:622) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:194) at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:206) at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:182) at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:103) at org.h2.engine.Database.getPageStore(Database.java:2659) at org.h2.engine.Database.open(Database.java:675) at org.h2.engine.Database.openDatabase(Database.java:307) at org.h2.engine.Database.<init>(Database.java:301) at org.h2.engine.Engine.openSession(Engine.java:74) at org.h2.engine.Engine.openSession(Engine.java:192) at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171) at org.h2.engine.Engine.createSession(Engine.java:166) at org.h2.engine.Engine.createSession(Engine.java:29) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152) at org.h2.Driver.connect(Driver.java:69) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) ... 29 more Caused by: java.lang.IllegalStateException: The file is locked: nio:/Users/sion/test.mv.db [1.4.200/7] at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950) at org.h2.mvstore.FileStore.open(FileStore.java:172) at org.h2.mvstore.MVStore.<init>(MVStore.java:381) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3579) at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:170) ... 44 more Process finished with exit code 1
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
{...getInputProps()} 이 코드를 어떤 코드라고 부르나요?
<Dropzone onDrop={(acceptedFiles) => console.log(acceptedFiles)}> {({ getRootProps, getInputProps }) => ( <div style={{ width: 300, height: 240, border: '1px solid lightgray', display: 'flex', alignItems: 'center', justifyContent: 'center', }} {...getRootProps()} > <input {...getInputProps()} /> <Icon type='plus' style={{ fontSize: '3rem' }} /> </div> )} </Dropzone> 위의 코드에서 {...getRootProps()} 이 부분이 궁금합니다. ... <= 이런식으로 작성후 {}로 감싸고 함수를 작성하는거를 뭐라고 불러야하고 뭐라고 검색해봐야할까요??
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
toMany 관계에서 where 절
안녕하세요 강사님 jpa 공부중에 궁금한게 있어 질문드립니다. 먼저 OneToMany 양방향 관계인 Team과 Member가 있습니다. Team을 조회하면서 그중 나이가 10살 이상인 Member만 조회하도록 다음과 같이 코드를 작성했습니다 @Testvoid test2() { QTeam team = QTeam.team; QMember member = QMember.member; JPAQueryFactory query = new JPAQueryFactory(em); List<Team> result = query.selectFrom(team) .join(team.members, member) .where(member.age.eq(10)) .fetch(); result.forEach(t -> { t.getMembers().forEach(m -> { Assertions.assertThat(m.getAge()).isEqualTo(10); }); });} 테스트 코드는 실패를 했습니다. 원인은 where절이 Team을 조회할때만 적용되었고 LazyLoading으로 Member를 가져올 때는 적용되지 않기 때문입니다. 그래서 이를 해결하기 위해 Member에 대한 쿼리를 추가적으로 작성하여 조회를 했습니다. @Testvoid test3() { QTeam team = QTeam.team; QMember member = QMember.member; JPAQueryFactory query = new JPAQueryFactory(em); List<Team> result = query.selectFrom(team) .join(team.members, member) .where(member.age.eq(10)) .fetch(); List<Long> teamIds = result.stream().map(Team::getId).collect(Collectors.toList()); List<Member> members = query.selectFrom(member) .where( member.team.id.in(teamIds), member.age.eq(10) ) .fetch(); Map<Long, List<Member>> memberMap = members.stream().collect(Collectors.groupingBy(m -> m.getTeam().getId())); result.forEach(t -> t.setMembers(memberMap.get(t.getId()))); result.forEach(t -> { t.getMembers().forEach(m -> { Assertions.assertThat(m.getAge()).isEqualTo(10); }); });} 그리고 이 테스트는 통과를 했고 출력값도 원하는 값을 얻게 되었습니다. 여기서 궁금증이 하나 생겼습니다. fetchjoin의 대상에는 where절을 걸면 안된다 -> fetchjoin의 경우 연관된 모든 엔티티가 존재할것으로 가정하고 사용해야 하기에 객체와 DB의 일관성이 깨지기 때문이다. 를 검색해서 알게 되었는데 제 코드의 경우 fetchjoin을 사용하지 않았습니다. 과정이 어쨋든간에 엔티티 조회를 했고 조회한 엔티티가 온전한 데이터를 모두 갖고 있는게 아닌 필터링된 데이터만 갖고 있기에 위의 fetchjoin처럼 데이터의 일관성이 깨져있는것으로 보이는데 제가 이해한것이 맞는지 궁금합니다. 또한 다음과 같이 엔티티에 where 절을 걸어서 조회하는 케이스도 데이터의 일관성이 깨진다고 볼 수 있는지 궁급합니다. @Entity@Getter@Setter@NoArgsConstructor(access = AccessLevel.PROTECTED)@ToString(of = {"id", "username", "age"})@Where(clause = "age = 10")public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public Member(String username) { this(username, 0); } public Member(String username, int age) { this(username, age, null); } public Member(String username, int age, Team team) { this.username = username; this.age = age; if (team != null) { changeTeam(team); } } public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); }}
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
auto *에 대해서
auto* test2 = e에서 e는 const char *인데 타입 추론 결과가 const char *이므로 최종적으론 (const char **)가 될 것 같았는데 그렇지 않은 이유가 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
rfce로 하시는데 rafce로 해줘도될까요?
rafce로 해줄경우 cosnt aaa => () => { return } 이런식으로 코드가 나오는데 나중에 크게 문제없을까요? 또 강사님은 function으로 해주신 특별한 이유가 있으신지 궁금합니당 감사합니다
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
덱에서의 임의 접근
연결 리스트에서 i번째 원소를 조회하는 것이 느렸던 것 처럼 덱에서도 i번째 동(?)이 어디 있는지 찾는 연산이 느린건가요? 연결 리스트와 덱을 연관지어서 생각하자면, 연결 리스트는 호가 1개뿐인 동들이 연결되어있다고 생각해도 괜찮나요?
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
vscode 실행실 터미널 오류
Vscode 로 예제파일을 실행중에 실행이 되지 않고 터미널에 오류가 발생되어 질문드립니다. 1.anaconda 재설치 후 path설정 체크 2.conda python 으로 prtier 변경 3.terminal defualt 변경 3가지 방법으로 시도 해보았으나 되지않아 스샷과 함꼐 남깁니다. 혹시 파이썬 설치경로와 예제파일 설치경로상의 문제가 있는건지 확인부탁드립니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
blog.save에 관련하여 질문있습니다.
let blog = new Blog({...req.body, user}); blog.save(); 할 때, user를 안 넣고 user의 ObjectId를 직접 입력해줘도 상관없을까요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
제 visual studio에서는 number++의 원자성이 보존되는거같은데 맞나요...?
제 디스어셈블리에서는 number++; 가 선생님 강의와 다르게 나옵니다. number의 주소값에 접근해서 그 값을 바로 1 증가시켜주는 것 같은데 원자성이 보존되는게 아닌가? 라고 생각해봤지만 결과는 0이 안나오더라구요. inc dword ptr ds:[0F04424h] 이 줄이 number의 주소값에 접근해서 그 값을 바로 1 증가시켜주는게 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
스프링부트 쿼리로그가 자꾸 일직선으로 나오네요
자꾸 이런식으로 나오는데 application.yml은 강의 내용그대로 띄어쓰기 잘 적용했습니다.. 어떻게하면 예쁘게 쿼리를 볼 수있을까요..
-
해결됨실전! 스프링 데이터 JPA
예제 실행시 이해 안되는 오류 상황 - TransactionRequiredException
안녕하세요. 영한님. 이상한 오류 상황이 있어서 도움을 요청드립니다. 코드는 강의대로 잘 입력했{다고 확신합|습}니다. 예제 코드 JpaEventBaseEntity() 메소드를 study.datajpa.entity.MemberTest class에 두면 TransactionRequiredException 예외가 발생합니다. em.flush() 위치에서, javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call 라고 합니다. 반면에 똑 같은 test method를 study.datajpa.repository.MemberRepositoryTest 클래스 안에 두면 문제 없이 실행됩니다. 어떤 차이인지를 밝혀 주시면 감사하겠사옵니다. 아래 소스는 상기 2 개 위치 모두에 JpaEventBaseEntity() 메소드를 넣어둔 상태입니다. 프로젝트 소스 : https://github.com/skc1104/data-jpa-qna 감사합니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
테스트 실행하면 fail이 나오는데 어떻게 해결해야될까요?
아래 다른분이 질문하셨길래 봤는데 어디를 지워야할지 모르겠습니다 아래는 실행했을때 에러코드입니다 FAIL src/App.test.js ✕ renders learn react link (78 ms) ● renders learn react link TestingLibraryElementError: Unable to find an element with the text: /learn react/i. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. <body> <div> <div class="App" > <header class="App-header" > <img alt="logo" class="App-logo" src="logo.svg" /> <p> Edit <code> src/App.js </code> and save to reload. </p> <a class="App-link" href="https://reactjs.org" rel="noopener noreferrer" target="_blank" > 안녕안녕 </a> </header> </div> </div> </body> 4 | test('renders learn react link', () => { 5 | render(<App />); > 6 | const linkElement = screen.getByText(/learn react/i); | ^ 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:90:38 at node_modules/@testing-library/dom/dist/query-helpers.js:62:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:111:19) at Object.<anonymous> (src/App.test.js:6:30) Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: 4.242 s Ran all test suites. Watch Usage › Press f to run only failed tests. › Press o to only run tests related to changed files. › Press q to quit watch mode. › Press p to filter by a filename regex pattern. › Press t to filter by a test name regex pattern. › Press Enter to trigger a test run.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
vercel deploy 오류
처음에 deploy했을때 두번째 사진처럼 뜨길래 다시 deploy했더니 첫번째 사진처럼 오류가 발생합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
메모리 베리어 개념이 살짝 헷갈려서 질문드립니다!
2번째 예제에서 메모리 베리어가 없으면 1) 스레드 A가 실행된다. 2) _answer = 123; 보다 _complete = true;가 먼저 실행되는 경우가 생긴다.(코드 재배치) 3) _answer = 123;이 실행되기 전에 스레드 B가 실행된다. 4) _complete = ture이므로 _answer = 0이 출력된다. 이런 순서로 프로그램이 실행 될 수도 있다는 뜻으로 이해했는데 맞나요? 메모리 베리어를 사용하면 1) 위 경우처럼 순서가 뒤바뀌는 경우가 없어진다. -> 코드 재배치 억제 2) 두 스레드가 같이 사용하는 전역변수 _answer, _complete를 Store하고 Load하는 부분을 확실하게 할 수 있다.( = 물을 내린다...?) -> 가시성 이러한 이점이 있는거구요!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
pm2 이용해서 .env파일 삭제
1. 배포완료되고 pm2로 서버를 실행하고 나면, app.js가 이미 메모리에 .env파일을 읽어들였기 때문에 pm2덕분에 백그라운드로 노드를 실행시켜놓고 .env파일을 지울 수 있는 것 같습니다. 서버가 죽어서 pm2가 서버를 재시작시키는 경우를 제외하면 어차피 process.env에 저장되어있을테니 .env파일을 삭제시켜도 무방할 것 같은데, 맞나요? 2. 한편 .env파일을 서버에 올리지 말라고 했는데, .env값 들은 어찌되었든 서버재시작처럼 동적으로 요구되는 경우가 있을텐데 .env파일을 서버에 올려놓지 않고서 이를 어떤식으로 해결하나요?
-
미해결대세는 쿠버네티스 (초급~중급편)
auto scaling
안녕하세요. auto scaler 강의 듣다 궁금한 점이 있어 질문드립니다. pod scaler의 경우 cpu 사용율 혹은 메모리 사용율에 따른 자동 증가가 가능한걸로 이해를 했는데 혹시 cluster scaler 는 이러한 설정이 가능한지 궁금합니다. 제가 알아보니 cluster scaler를 만들어 놓더라도 노드에 더이상 파드가 할당될수없을 때 증가.라는 것말고는 pod처럼 설정하는 방법을 찾아볼수가 없었어서 질문드립니다. 감사합니다.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
port 를 일정 범위안에서 랜덤하게 하면 discoveryService 에서 port를 다르게 인지합니다.
server: port: ${random.int(10000,51000)} #0spring: application: name: my-first-serviceeureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} 위처럼 서버의 Port 를 일정 범위안에서 랜덤하게 하면 아래와 같은 현상이 발생됩니다. io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /192.168.40.24:34968 Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): |_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain] |_ checkpoint ⇢ HTTP GET "/first-service/welcome" [ExceptionHandlingWebHandler] Stack trace: Caused by: java.net.ConnectException: Connection refused at java.base/sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:779) ~[na:na] at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:707) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.63.Final.jar:4.1.63.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.63.Final.jar:4.1.63.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.63.Final.jar:4.1.63.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.63.Final.jar:4.1.63.Final] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] { "timestamp": "2021-05-12T08:33:11.458+00:00", "path": "/first-service/welcome", "status": 500, "error": "Internal Server Error", "message": "", "requestId": "fc5008c3-1" } 확인해보니 실제 first-service 에 열린 port와 discoveryService 에서 인지하는 서버가 서로 달랐습니다. 그러면 ${random.int(10000,51000)} 사용하면 안되는건가요? server: port: 0 이렇게 바꾸면 잘 됩니다.
-
미해결애플 웹사이트 인터랙션 클론!
pin을 포함한 메시지 부분의 out 처리가 안 됩니다
좋은 강의 잘 듣고 있습니다. 다른 건 잘 되는데 이상하게 scroll-section-2의 pin을 포함한 엘리먼트(messageB, C)의 opacity out과 translateY out이 적용되지 않네요. 세 시간동안 찾았는데, 결국 도움을 요청합니다. 제 소스에는 scroll-section-2의 messageA, B, C를 다르게 네이밍했으니 참고 부탁드립니다. ( messageA -> mainMessage, messageB -> descMessageA, messageC -> descMessageB, pinB -> pinA pinC -> pinB) https://github.com/redonearth/studiomeal-tutorial/tree/master/apple-clone
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA가 Mybatis를 완벽히 대체 가능한가요?
주니어 개발자로 현재 SI업체에서 근무하고 있는데, 개발시 Mybatis를 사용합니다. 강의를 듣고 간단하게 JPA를 적용해서 샘플 프로젝트정도를 만들어 보았는데 개인적으로는 매우 마음에 들어서 프로젝트에도 한번 써보고 싶어서 사수에게 건의 하였으나 JPA는 간단한 CRUD에는 좋은데 실제 프로젝트에서는 통계등을 조회해야하는데 매우 많은 조인들이 들어가고 sql 쿼리만 수백줄이 되는데, 이런걸 JPA가 대체하기 어렵다. 라는 답변을 받아서 문의 드립니다. 근데 생각해보면 좀 이상한게 해외에서는 JPA가 더 많이 사용된다는데 해외에는 차트같은게 없나..? 싶은 생각이 들더라구요. 그래서 JPA가 mybatis를 완벽히 대체가 가능한건지, 아니면 둘을 병행해서 써야 하는건지 궁금합니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
강사님이 내주신 괴제 혹시 이거보다 더 좋은 방법이 있을까요?
<UserDaoService> public User updateByName(int id, String name){ User user = findOne(id); user.setName(name); user.setJoinDate(new Date()); return user;}이렇게 명시하였고<UserController>@PutMapping(path = "/users/{id}/{name}")public void updateUser(@PathVariable int id, @PathVariable String name){ User user =service.updateByName(id, name); if(user==null){ throw new UserNotFoundException(String.format("ID[%s] not found", id)); }}이렇게 받아서 처리하는 방식을 사용하였고 정상적으로이름이 바뀌는 것을 확인했습니다. 혹시 이 코드 말고좀 더 괜찮은 코드로 리팩토링하거나 그럴 수 있을까요?!힌트만 주셔도... 좋습니다!!항상 감사하고 수업 정말 잘 듣고 있습니다.