부트스트랩 CSS 적용 안됨
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 부트스트랩 css 적용이 계속 안되서 에러가 발생하는데 영상에서 하신 방법들(Resources 우클릭 - Reload from disk 등) 그대로 하더라도 적용이 안되네요!ㅠㅠ 미리 감사드립니다.
- spring-boot
- 웹앱
- JPA
- java
- spring
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 부트스트랩 css 적용이 계속 안되서 에러가 발생하는데 영상에서 하신 방법들(Resources 우클릭 - Reload from disk 등) 그대로 하더라도 적용이 안되네요!ㅠㅠ 미리 감사드립니다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] h2는 1.4.199를 사용합니다 User 테이블이 생성되어야 할 것 같은데 생성 실패하는 이유가 뭘까요? (User 테이블이 아니라 강의를 똑같이 따라한 Member에서 id를 @GeneratedValue해도 같은 오류가 나타납니다) persistence.xml <? xml version ="1.0" encoding ="UTF-8" ?> <!--jpa 설정 파일 --> <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/~/test" /> <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 ="create" /> </properties> </persistence-unit> </persistence> User.java package hellojpa ; import javax.persistence.* ; @Entity public class Users { @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private String id ; @Column private String name ; public Users () { } public String getName () { return name ; } public void setName (String name) { this . name = name ; } public String getId () { return id ; } public void setId (String id) { this . id = id ; } } 오류내역 Hibernate: create table User ( id varchar(255) generated by default as identity, name varchar(255), primary key (id) ) 1월 01, 2022 6:05:00 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table User ( id varchar(255) generated by default as identity, name varchar(255), primary key (id) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table User ( id varchar(255) generated by default as identity, name 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.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504) at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277) at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71) at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207) at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183) 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 hellojpa.MappingMain.<clinit>(MappingMain.java:9) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a CREATE TABLE USER[*] (\000d\000a ID VARCHAR(255) GENERATED BY DEFAULT AS IDENTITY,\000d\000a NAME VARCHAR(255),\000d\000a PRIMARY KEY (ID)\000d\000a )"; expected "identifier"; SQL statement: create table User ( id varchar(255) generated by default as identity, name varchar(255), primary key (id) ) [42001-204] at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.getSyntaxError(DbException.java:265) at org.h2.command.Parser.readIdentifier(Parser.java:6080) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:6040) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:6069) at org.h2.command.Parser.parseCreateTable(Parser.java:10325) at org.h2.command.Parser.parseCreate(Parser.java:7811) at org.h2.command.Parser.parsePrepared(Parser.java:1140) at org.h2.command.Parser.parse(Parser.java:1068) at org.h2.command.Parser.parse(Parser.java:1037) at org.h2.command.Parser.prepareCommand(Parser.java:965) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:624) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.lang.Thread.run(Unknown Source) at org.h2.message.DbException.getJdbcSQLException(DbException.java:451) at org.h2.engine.SessionRemote.done(SessionRemote.java:607) at org.h2.command.CommandRemote.prepare(CommandRemote.java:85) at org.h2.command.CommandRemote.<init>(CommandRemote.java:51) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:477) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1292) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 1월 01, 2022 6:05:00 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test] Process finished with exit code 0
해결됨
풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
안녕하세요? page를 처음 렌더링하고 MsgItem의 수정을 클릭하여 startEdit을 실행하면 setEditingId(x.id)를 실행시키는데요. 바로 console.log(x.id)와 console.log(editingId)를 찍어보면 x.id는 잘 나오는데 editingId의 경우 처음 null 이 오고 계속 전값들이 찍혀서요(계속 클릭한 전 x값들이 editingID에 찍힘). setEditingId 함수로 editingID 값 변경까지 시간 딜레이가 있어서 일까요? 작동은 잘 합니다만, 공부하느라 console.log를 찍어보다 의문점이 들어서요!
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
App.js 에서 react-router-dom v6 버전에 맞게 문법을 Switch 대신 Routes 로 바꾸는 부분과 component 대신 element 로 바꾸시고 꼼수(?)로 Auth로 감싼 컴포넌트를 새로 정의해서 넣으시면 작동은 됩니다..
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. OrderItem의 생성 메소드 (createOrderItem)에서 setOrder를 하지 않은 이유가 OrderItem을 Order가 관리하는 형태여서 그런건가요? 이유가 무엇인가요?
해결됨
15일간의 빅데이터 파일럿 프로젝트
1. java 버전으로 1.8을 설치한다고 하셨는데 1.8로 설치하는 이유를 알고 싶습니다. 2. 환경 변수에 이미 JAVA_HOME이 있으면 어떻게 해야하나요? 3. 이클립스 installer를 다운받고 실행했더니 다음과 같이 뜨는데 어떤 것을 설치해야하나요 4. vitualbox download 하는 부분에서 no longer supported라고 명시되어있음에도 다운받아서 사용하는 이유를 알고 싶습니다. 5. 파일질라를 사용하는 대신에 scp 나 rsync 명령어를 사용하여 진행할 수 있을까요
미해결
웹 게임을 만들며 배우는 React
강의에서는 es6 방식을 사용하지만, common js도 알아두어야 할 것 같아서, 혼자 common js를 사용해보던 도중 문제가 발생하여 질문 드립니다! 문제 요약: common js 방식으로 내보내기 한 후, 같은 경로 상의 다른 파일에서 require를 했을 때, 빈객체가 required됩니다. 세부사항 1. 상황 TicTacToe.jsx에서 CLICK_CELL이라는 상수를 내보내어, Td.jsx라는 동일 경로의 다른 파일에서 그 상수를 받아 오려 하는데, 빈 객체가 required 되어 CLICK_CELL의 값이 undefined로 나타납니다. 해당 상수는 Td.jsx가 아닌 다른 경로에 있는 파일에서는 정상적으로 required됩니다! 2. 코드 # 파일 구조 # TicTacToe.jsx # Td.jsx console.log 결과 3. 추측 common js를 통해 같은 경로 상의 파일에서 모듈을 받아오는 경우에 문제가 생기는 것 같습니다. 다만 정확히 어떤 문제인지, 또 어떻게 해결할 수 있는지 해결 방법을 끝내 찾지 못해 질문 드립니다. *깃헙 주소: https://github.com/Parkhanyoung/React-zerocho-basic 항상 좋은 강의 감사드립니다! 덕분에 정말 즐겁게 공부하고 있습니다 ㅎㅎ
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 강의 너무 잘 듣고 있습니다. 듣다가 잘 모르겠는 점이 있어서 질문을 드립니다. 기존 서비스 테스트코드에서는 @BeforeEach로 의존주입을 했는데, 통합테스트에서는 아래와 같이 @Autowired로 끌어온다고 하셨습니다. 테스트코드인데도 SpringConfig코드에서 아래의 서비스와 레포지토리 객체를 실제로 끌어오는 건가요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 명시적 조인 예시로 보여주신 다음 JPQL에 궁금한적이 있습니다. select m.username from Team t join t.members m 위 코드에서 alias m은 무엇에 대한 별칭인가요? 1. t.members as m 위 코드 처럼 team과 members를 묵시적으로 조인한 결과 릴레이션을 m이라 칭한다는 의미인가요?? 아니면... 2. (Team t join t.members) m 위 코드처럼 t와 t.members 를 조인한 릴레이션을 m이라 칭한다는 의미인가요?? PPT를 보면 "FROM 절에서 명시적 조인을 통해 별칭을 얻는다" 라고 하셨는데, 명시적 조인을 통해 => 즉 2번 을 통해 m을 얻는다는 의미 인가요? 이게 한줄로 써있다 보니까 햇갈리는것 같습니다 ㅠ.ㅠ
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8:30 에 윈도우 버전으로 어떻게 바로 템플릿위치로 넘어가나요?
해결됨
풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
무한스크롤 구현시 < div ref ={ fetchMoreEl } / > 이부분이 화면스크롤시 제대로 감지가 안되는 건지 useEffect 에서 intersecting 이 계속 false 더군요 제가 해결한 방법은 < div ref ={ fetchMoreEl } style ={{ border: ' 1px solid white ' }} ></ div > 이렇게 입력해서 정상작동하는 것을 확인했습니다. 비슷한 문제 발생시 참고용~
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니요 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요 강의잘보고있습니다 다름이 아니라 제가 취업준비하려는 회사가 jsp를 사용하는데 jpa활용2편 까지의 기능을 타임리프 대신 jsp로 적용하여 구현할수있는지 궁금합니다 구현하려면 코드수정이 컨트롤러 에서도 일어나야하는지 궁금합니다!
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
이렇게 적으면 v6에서 작동합니다. 앞에 분들이 여럿 글을 적어 주셨지만 정리된 게 없는 것 같아서 이렇게 올립니다. 공식문서에 나와있지만 영어가 어려우신 분들이나 처음 공부하시는 분들은 이거 참고 하시면 될 겁니다. 그리고 Link부분은 아직 안 나왔는데 적혀있어서, 오류떠서 주석 처리 했습니다. ```js import { BrowserRouter , Route , Routes , //Link } from "react-router-dom" ; import LandingPage from './components/views/LandingPage/LandingPage' import LoginPage from './components/views/LoginPage/LoginPage' import RegisterPage from './components/views/RegisterPage/RegisterPage' function App () { return ( < BrowserRouter > < Routes > < Route exact path = "/" element = { < LandingPage /> } /> < Route exact path = "/login" element = { < LoginPage /> } /> < Route exact path = "/register" element = { < RegisterPage /> } /> </ Routes > </ BrowserRouter > ); }
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요. 강의를 보다가 질문 드립니다. 회원가입 중복처리 부분에서, 김영한님 말대로 회원가입하는 사람수가 매우 많으면 validateDuplicateMember만으론 부족하여, 결국 동시성문제가 발생 할 수밖에 없습니다. 그래서 name에 대하여 unique제약조건이 필수인데요. 그런데 생각해보면 그럴거면 굳이 validateDuplicateMember를 할 필요없이 그냥 unique제약조건을 걸어놓기만 해도 충분합니다. 제가 보기에는 에러처리를 괜히 두번해주는 느낌을 받았거든요. 여기서 이렇게 해주는 이유는 1. 단순 예시를 보여주기 위함. 2. 도메인에 unique제약 조건을 거는 것만으론 테스트를 통과하지 못함(@Commit을 추가하지 않는 이상). 이부분이 테스트 할때 좀 거슬리긴 하더라구요. 3. 좀 더 빠른 반응성? 4. db쪽 예외는 나중에 앞단에서 처리해주기 까다로움. 5. 그 외 다른 이유가 있음. 이정도 생각해보았는데요. 어떤 이유에서 인지 알려주시면 감사하겠습니다.
미해결
따라하며 배우는 리액트 테스트 [2023.11 업데이트]
너무 기초적인 질문인 것 같아 걱정이지만 질문드립니다~! 1. jest와 @testing-library/jest-dom는 어떤 차이가 있고 각각의 역할이 궁금합니다. 2. @testing-library와 함께 사용하는 이유와 jest만 따로 사용하지는 않는 이유가 궁금합니다.
해결됨
[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요 제로초님 포트폴리오를 nextjs로 새로만들면서 작업중인데 라우트 이동 및 새로고침시에도 각 컴포넌트별 state를 유지하는 효율적인 방법을 좀 알고싶습니다. url : https://dv-node-portfolio.herokuapp.com/ git : https://github.com/dvisign/new-next-portfolio 전에 리액트로 할때는 useHistory를 이용한 커스텀 훅스 route state에 저장하였는데 nextjs에서는 사용할수가 없어서 useRouer로 저장이 가능한가 확인해보았는데 안되더라구요 그래서 다음으로 알아본것이 redux-persist 라이브러리였는데 리뉴얼된 강좌에서 ssr때문에 HYDRATE 액션때문에 사용은 해보지 않았고 리액트로 redux-persist 라이브러리를 사용했을때 로컬스토리지에 담는것같아 이용하지 않았습니다(개인적으로 localstorage를 신뢰하지 않는 개인적 성향때문에 그렇습니다.) 예를들어서 사이드 네비게이션이 열려있는것을 닫았다가 다른 라우트로 이동했을때 다시 열려있는 현상입니다. 스크린샷을 첨부합니다. 부단 이 부분 뿐만 아니라 나중에 더 만들다보면 이런 state유지 할것들이 더 많아질텐데 어떻게 유지 시키는것이 가장 효율적인 방법일까요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. <dependencies> <!-- H2 데이터베이스--> <dependency> <groupId> com.h2database </groupId> <artifactId> h2 </artifactId> <version> 2.0.202 </version> </dependency> <!-- JPA 하이버네이트--> <dependency> <groupId> org.hibernate </groupId> <artifactId> hibernate-entitymanager </artifactId> <version> 5.6.1.Final </version> </dependency> </dependencies> @Entity public class Member { @Id @GeneratedValue (strategy = GenerationType. IDENTITY ) private Long id ; ... } public class EntityMapping { public static void main (String[] args) { EntityManagerFactory emf = Persistence. createEntityManagerFactory ( "hello" ) ; EntityManager em = emf.createEntityManager() ; EntityTransaction tx = em.getTransaction() ; tx.begin() ; try { Member member = new Member() ;; member.setUsername( "AAA" ) ; em.persist(member) ; tx.commit() ; } catch (Exception e){ tx.rollback() ; e.printStackTrace() ; } finally { em.close() ; } emf.close() ; } } 실행하면 콘솔에서 Hibernate: drop table if exists Member CASCADE Hibernate: create table Member ( id bigint generated by default as identity, name varchar(255) not null, primary key (id) ) 와 같이 테이블이 생성되고 Hibernate: /* insert hellojpa.Member */ insert into Member (id, name) values (null, ?) insert 쿼리는 위와 같이 데이터베이스로 호출하는것이 보입니다. [오류로그] 12월 23, 2021 10:44:53 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: NULL not allowed for column "ID"; SQL statement: /* insert hellojpa.Member */ insert into Member (id, name) values (null, ?) [23502-202] javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:780) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:760) at hellojpa.EntityMapping.main(EntityMapping.java:18) Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200) at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:43) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3279) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3885) at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:84) at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645) at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282) at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263) at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317) at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:330) at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287) at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:123) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:774) ... 2 more Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "ID"; SQL statement: /* insert hellojpa.Member */ insert into Member (id, name) values (null, ?) [23502-202] null이 들어 갈수 없다고 나오는데 강의중에는 어떻게 오류가 안나고 되는지 궁금합니다.
미해결
실전! Querydsl
JPA(ORM) 장점 1) RDB에 종류와 관계없이 사용 가능하다. 추후 DB 변경이나 코드 재활용에 용이하다. 2) 비지니스 로직에 집중할 수 있다. 3) 테이블 생성, 변경 등 엔티티 관리가 간편하다. 4) 쿼리에 집중할 필요 없어 빠른 개발이 가능하다. 단점 1) 어렵다. 단방향, 양방향, 임베디드 관계 등 이해해야할 내용이 많으며, MyBatis(SQL Mapper) 장점 1) JPA에 비해 쉽다. SQL 쿼리를 그대로 사용하기에 복잡한 Join, 튜닝 등을 좀더 수월하게 작성 가능하다. 2) SQL의 세부적인 내용 변경 시 좀 더 간편하다. 3) 동적 쿼리 사용 시 JPA보다 간편하게 구현 가능하다. 단점 1) 데이터 베이스 설정 변경 시 수정할 부분이 너무 많다. (Oracle의 페이징 쿼리를 MySQL에서 사용 불가능!) 2) Mapper작성부터 인터페이스 설계까지 JPA보다 많은 설계와 파일, 로직이 필요하다. 3) 특정 DB에 종속적이다. Querydsl 장점 1) 쿼리를 자바 코드로 작성 2) 문법 오류를 컴파일 시점에 잡을 수 있음. 3) 쉬운 SQL 스타일 문법(복잡한 쿼리 작성 용이) 질문 : Querydsl 초반부만 듣고 있는 수강생입니다. 1) 서비스가 MVC + MYBatis에서 JPA + querydsl 바꾸는 점에 있어 생기는 기본적인 문제들이 있을까요? 2) QueryDSL 이 MyBatis 를 대신해 커버 가능할까요 ?
해결됨
코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요. 싱글톤에서 Early, Lazy 초기화의 차이를 공부하기 위해 클래스 로드에 개념을 처음으로 딥하게 공부해보고 있습니다. 클래스 로드와 사용에 따른 초기화간 heap 메모리 할당이 되는지도 공부하기 위해 위와 같이 트래킹해봤습니다. 저는 트래킹 결과를 보고 아래와 같이 해석했습니다. 1. 사용하지 않으면 early, lazy 모두 초기화되지 않는다. 2. early 는 getInstance() 메소드로 진입할 때 초기화 된다. lazy 는 getInstance() 메소드가 끝날 때 Holder 를 통해 초기화 된다. 하지만 강의에는 early 초기화시 사용하지 않아도 생성된다고 말씀해주셨습니다. 그렇다면 캡쳐 1에서 인스턴스가 보여야된다고 생각했는데 보이지 않아 혼동이 와서 질문 드립니다. 혹시 제가 개념이 헷갈리거나 트래킹을 잘못하고 있는 것일까요..? ㅠㅠ public class App { public static void main ( final String [] args) { singleton () ; } private static void singleton () { final EarlyInitializationSingleton early = EarlyInitializationSingleton . getInstance () ; // 캡쳐 1 final LazyInitializationSingleton lazy = LazyInitializationSingleton . getInstance () ; // 캡쳐 3 System . out . println ( "end" ) ; // 캡쳐 5 } } public class EarlyInitializationSingleton { private static final EarlyInitializationSingleton INSTANCE = new EarlyInitializationSingleton () ; private EarlyInitializationSingleton () { } public static EarlyInitializationSingleton getInstance () { return INSTANCE ; // 캡쳐 2 } } public class LazyInitializationSingleton { private LazyInitializationSingleton () { } private static class LazyInitializationSingletonHolder { private static final LazyInitializationSingleton INSTANCE = new LazyInitializationSingleton () ; } public static LazyInitializationSingleton getInstance () { return LazyInitializationSingletonHolder . INSTANCE ; // 캡쳐 4 } }
해결됨
실전 리액트 프로그래밍
React.memo 가 props 비교를 통해 리렌더링을 막아줄 수 있는 유용한 기능이라는 것을 알게되었는데요, 그렇다면 리액트에서는 왜 React.memo 적용을 모든 컴포넌트에 default로 제공하지 않는지 궁금합니다. 제가 구글링을 해본 결과 2년 전에 Dan Abramov가 트위터에 이런 글을 올렸더라구요.. ``` Ask yourself: Why don’t you put Lodash memoize() around every function? Wouldn’t that make all functions faster? Do we need a benchmark for this? Why not? ``` 저는 React.memo가 특정 컴포넌트의 이전 상태의 props를 기억하고 있다가 새로 렌더되어야할 상황에 전달된 props와의 비교를 통해 선택적으로 렌더링을 결정하는것이라고 생각했는데, 저 트위터를 보면 마치 React.memo가 컴포넌트 전체를 메모리 어딘가에 기억해야하고 이 작업이 오히려 성능에 악영향을 줄 수 있다는 뉘앙스로 들렸습니다. 횡설수설 서론이 길어진 것 같아서 죄송합니다. React.memo를 왜 모든 컴포넌트에 적용하면 안좋은지 궁금합니다!