자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
실행 코드 : show table user; 결과 : [2024-04-14 23:34:52] [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user' at line 1 [2024-04-14 23:34:52] [42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user' at line 1 왜 안되는지 모르겠습니다. 실행 코드 : show tables; 결과 : 2. 저는 저런 테이블을 만든 적이 없는데 왜 저렇게 많이 나오는지 모르겠습니다. 지금 같은 상황에 어떻게 질문을 드려야할지 몰라서 이렇게 질문을 드립니다...
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 비지니스 요구 사항에 맞게 엔티티를 설계할 때 비지니스가 복잡하고 현실과 맞게 설계하기 위해서 고민하다 보니 다대다 관계가 많아지는 것 같습니다 배운대로 OrderItem과 같이 모두 중간에 엔티티를 만들어 1대다로 바꾸었습니다만 몇가지 의문이 드는 부분이 있어서 질문드립니다. 다대다 관계를 위해 중간 엔티티와 테이블을 만들다 보니 의미없는 엔티티와 테이블이 많아지는 것 같습니다. 이런 경우 설계가 잘못되었다고 판단할 수 있나요 OrderItem과 같은 중간 엔티티에 대한 리포지토리를 만들면 조회가 편해지고 조인 횟수를 줄일 수 있을 것 같습니다. 그런데 이런 것은 설계적으로 바람직하진 않은가요? 언제나 답변 감사합니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 학습자료에는 세팅시 그래들에서 이렇게 그래들로 맞추라고 되어있는데 이렇게하니 서버를 구동하고 종료시 자꾸 Execution failed for task ':JpashopApplication.main()' 가 뜹니다. 다른 분의 질문에 바로 밑의 sdk와 프로젝트 structure에서 project의 sdk도 버전을 맞추고 그게 안돼서 새로 17로 로드해도 계속 뜹니다. 저 화면에서 gradle이 아닌 intelliJ로 바꾸면 에러는 안뜨는데 자료에는 gradle이 아니면 에러가 뜰꺼라고 하셔서 어떻게 해야할지 알고싶습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강사님이랑 서포터즈님들 강의 질문만으로도 바쁘신데 강의와 관련 없는 질문해서 죄송합니다. 제가 지금 사이드 프로젝트를 진행중입니다. 그런데 querydsl을 사용하는 중 문제가 생겼습니다. 혹시 제 코드를 구글 드라이브에 올리면 한번 봐주실 수 있나요? 만약 괜찮으시다면 url 올리면서 문제 상황 자세히 설명드리겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요!! 선생님 ㅜㅜ 바쁘실텐데 jar 파일을 war로 변경하는 과정에서 문제가 생겼어요 ㅜㅜ 이렇게 설정하고 Webapplication 파일을 이렇게 설정하고 터미널에서 ./gradlew bootwar 이렇게 해줬는데 빌드가 안되고 * What went wrong: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache > Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 [in thread "Daemon worker"] * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2s 이런 에러가 떠요 ㅜㅜㅜㅜㅜㅜㅜ 뭐가 문제일까요 ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요! 강의 9분 8초 쯤에 이거 단축키 어떤 키 쓰신걸까요 ?? 알고싶습니다 ㅜㅜ
JPA가 만들어서 실행한 SQL select item0_.id as id1_0_0_, item0_.item_name as item_nam2_0_0_, item0_.price as price3_0_0_, item0_.quantity as quantity4_0_0_ from item item0_ where item0_.id=? item_nam2_0_0_ -> item_name2_0_0_ 이렇게 수정하는 것이 맞지 않은가요? item_nam2_0_0_ <- 이것이 맞다면, sql으로 변환되는 기준에 대해서 여쭈어보고자 합니다.
[질문 내용] 동시성 문제를 공부하던 중 한 트랜잭션 내에서 A 와 C 의 중간테이블인 B 를 저장 이후 C의 칼럼을 변경감지를 통해 업데이트하려고 수정하는 상황입니다 찾아보니 B를 저장할 때 외래키인 C 에 대해 SLock 을 걸더군요! 디버깅해보니 @Transactional이 속한 범위 내에서는 쭉 C에 대해 SLock 을 걸더라고요! 근데 제가 알기로 C 에 대해 update 쿼리가 날라갈 때는 XLock 을 거는 걸로 알고있거든요! 결국 C에 대해 @Transactional 이 종료될 언저리 쯤,즉 변경 감지를 통해 C에 대해 update 쿼리가 날라갈때 SLock 에서 XLock 이 되는 과정을 직접 눈으로 보고 싶은데 혹시 어느 클래스의 어떤 메소드에서 변경감지를 통해 flush 를 하고 commit 을 하는지 알려주실 수 있을까요??
제목 그대로입니다. 블로그 찾아보니 flush 는 영속성 컨텍스트의 내용을 DB에 동기화 시키는 것, 이라고 하고 커밋은 트랜잭션을 종료하는데 쓴다고하더라구요!. @Transactional public void likePost(final Member currentMember,final Long postId){ try{ postLockRepository.getLock(postId.toString()); final Post post = findPost(postId); //post 의 작성자와 좋아요를 누르려는 사람의 ID 값이 같을 떄 예외 if (post.getMember().getId() == currentMember.getId()) { throw new NotFoundException(ErrorCode.MESSAGE_NOT_FOUND); } //이미 눌러져 있을 때 deleteLikePost 수행, 없다면 saveLikePost 수행 likePostRepository.findByMemberIdAndPostId(currentMember.getId(), post.getId()) .ifPresentOrElse(likePost -> { deleteLikePost(likePost, post);}, () -> { saveLikePost(currentMember, post); System.out.println("pp"); }); } finally{ postLockRepository.releaseLock(postId.toString()); } } private void saveLikePost(final Member member,final Post post){ LikePost lp= LikePost.builder() .post(post) .member(member) .build(); likePostRepository.save(lp); System.out.println("gg"); post.increaseLikeCount(); postRepository.saveAndFlush(post); System.out.println("kk"); } 이 코드에서 saveLikepost 를 실행하면 post 에 대한 좋아요 가 하나 증가합니다. 그리고 saveAndFlush를 통하면 update 쿼리가 바로 나가더라구요!. 이 같이 쿼리를 발생시키고 flush 를 했으니 영속성 컨텍스트에 있는 post 의 like_count 는 1이 증가되어야 합니다. 또한 likePostRepository.save () 도 역시 insert 쿼리가 나가고요! 질문 요약: 저희가 알고있는 개념대로라면 영속성 컨텍스트에 있는 @Transactional 안에 있는 Save를 한 대상(LikePost) 와 @Transactional 안에 있는 SaveFlush 대상 역시 FLUSH를 통해 DB와 동기화 시킨다고 생각했습니다. (DB에 동기화시켰으니까 insert 하는 대상은 DB에 생겨야 하고, update 한 거는 update 가 제대로 반영이 되어야 한다고 생각했습니다) 그런데 위 과정에서 디버깅을 해보니(하이버네이트로 쿼리가 날라가는 것은 확인이 되었습니다) 실제 DB에 데이터가 들어가지 않고 @Transactional 이 끝나야 DB에 반영이 되더라고요!! 제가 동기화에 대해 이해를 잘 못하고 있는 걸까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 실전예제1을 따라하다가 이런 에러가 나는데 이유를 모르겠어요,, 어떻게 하면 해결할 수 있을까요? 그리고 h2DB 연결도 안되어서 찾아봤더니 url을 jdbc:h2:~/jpashop 이렇게 하면 된다고 해서 이렇게 해서 db접속을 했고, persistence.xml에도 url을 위와 동일하게 설정해두었습니다. 프로젝트 압축파일 구글드라이브에 올려놓았습니다! 도움 부탁드립니다. https://drive.google.com/file/d/1S5ytUHGS0cpr7LSvlFF5E8qyiTwjlOs-/view?usp=sharing
예제로 올려주신 ex1-hello-jpa가 Maven 기반으로 되어있어서 Gradle 기반의 예제로 학습해보기 위해 최대한 비슷한 예제 파일을 만들었습니다. 하지만 이 예제에서는 애플리케이션 실행 시 DB 자동 생성 관련 부분이 아예 동작하지 않습니다. (로그도 뜨지 않고, 실제로 쿼리도 수행되지 않습니다.) 프로젝트를 암만 뒤져봐도 JDBC 연결 정보도 다 전달했고, @Entity까지 다 했는데 왜 동작을 안 하는지 정말 모르겠습니다. https://drive.google.com/file/d/1epXZLqjRw8ssBAv6zKaVM7T7IpQ24hPW/view?usp=sharing 프로젝트 파일 링크입니다. 고수분들 도와주시면 정말 감사하겠습니다 ㅠㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 선생님^^ 강의 잘보고 있습니다. 항상 수고하십니다.h2 DB 말고 mysql centos7서버로 연결하려고 합니다. 서버에 연결까지하고 테이블까지는 생겼는데 데이터를 입력하고 저장을 누르면 ava.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '=' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException (SQLError.java:12 9) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException (SQLExceptionsMapping.java:12 2) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal (ClientPreparedStatement.java:91 6) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery (ClientPreparedStatement.java:97 2) ~[mysql-connector-java-8.0.29.jar:8.0.29] at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery (ProxyPreparedStatement.java:5 2) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery (HikariProxyPreparedStatement.jav a) ~[HikariCP-3.4.5.jar:na] at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract (ResultSetReturnImpl.java:5 7) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.getResultSet (Loader.java:230 4) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.executeQueryStatement (Loader.java:205 7) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.executeQueryStatement (Loader.java:201 9) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.doQuery (Loader.java:94 8) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:34 9) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.doList (Loader.java:285 0) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.doList (Loader.java:283 2) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.listIgnoreQueryCache (Loader.java:266 4) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.Loader.list (Loader.java:265 9) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.loader.hql.QueryLoader.list (QueryLoader.java:50 6) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.java:40 0) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.engine.query.spi.HQLQueryPlan.performList (HQLQueryPlan.java:21 9) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.internal.SessionImpl.list (SessionImpl.java:141 4) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.query.internal.AbstractProducedQuery.doList (AbstractProducedQuery.java:162 5) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.query.internal.AbstractProducedQuery.list (AbstractProducedQuery.java:159 3) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at org.hibernate.query.Query.getResultList (Query.java:16 5) ~ [hibernate-core-5.4.25.Fina l.jar :5.4.25.Fina l] at jpabook.jpashop.repository.MemberRepository.findByName (MemberRepository.java:3 2) ~[main/:na] 이러한 에러가 발생합니다. 뭐가 문제 일까요 ㅜㅜㅜ
안녕하세요 JPA 학습중 join 관련하여 질문 드립니다. public class Score{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long scoreId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "game_id") private Game game; } Score라는 클래스가 있고, Game 엔티티와 ManyToOne 연관관계가 있을 때 public interface ScoreRepository extends JpaRepository<Score,Long>{ @Query("select s from Score s join s.game g left join s.member m left join m.profileImg p " + "where g.gameId=:gameId and (p.type = 'PROFILE' OR p IS NULL) order by s.totalScore desc") Slice<Score> findByGameId(@Param("gameId") Long gameId, Pageable pageable); } Game별 Score를 가져올 경우 해당 게임에 등록된 스코어가 없는 경우 결과가 반환되지 않아서 Game 엔티티의 게임명이나 게임타입 같은 게임정보를 가져올수가 없습니다. right join을 사용해보려 했는데 리턴값이 Slice<Score>라서 그런지 형변환 오류가 발생하는 것 같구요.. 이럴경우에는 Game 엔티티에서 @OneToMany 연관관계를 사용해서 결과를 가져와야하나요?? 그럴 경우 페이징은 어떻게 해결해야하는지 잘모르겠습니다..
spring boot 로 프로젝트 만들고 하는중이라서 부트에서 테스트 하고 있는데요. 구글링 해서 테스트 세팅하고 modelAndView 까지 했는데 view 값은 가져오는데 model 값이 안가져와지네요.... @MockBean 으로 Service 를 bean 등록 시키고 Service 에서 getList 할때 뭔가 잘안되는거 같은데 혹시 어떤게 잘못됬는지 확인 가능하신가요 ?? Controller Service test Controller test Constroller test 결과
프론트 부분에서 ESLint 때문에 계속 에러를 겪고 있는데요,, 해결했다 싶으면 신기하게도 다음번 컴퓨터를 키면 또 에러가 생겨있고 그러는데요, 빨간색 에러는 없앴는데 노란색 경고글도 없애고 싶습니다. 아래 노란색 경고글들도 없앨수 있는 방법이 있을까요... 에러때문에 이것저것 시도하다가 뭔가 버전이 안맞는 걸까요...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 동영상은 2점대에 설치인거같은데 현재는 아래처럼 나옵니다. 어느기준에 맞춰야 하나요? 임시로 아래 사진처럼 내리긴 했는데 JpashopApplication 동작화살표 버튼이 없어서요