spring 3 버전 이상 이용시 주의사항
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring 3 버전 이용시에는 java 17 이상 버전을 이용해야합니다. java 11을 이용하실 때에는 오류가 따라오는거 주의 바랍니다.
- java
- spring
- mvc
- spring-boot
172만명의 커뮤니티!! 함께 토론해봐요.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring 3 버전 이용시에는 java 17 이상 버전을 이용해야합니다. java 11을 이용하실 때에는 오류가 따라오는거 주의 바랍니다.
실전! Querydsl
QueryDSL 내부 메소드 중 fetchResult() 나 fetchCount()는 만료된 메소드에 대해서는 QueryDSL에서 Blaze-persistence Integration 라이브러리 사용을 권장 하는데요, Blaze-persistence도 QueryDSL 처럼 쿼리 빌더 API 로서 개발자에게 유지보수하기 좋은 객체를 제공해주고 있습니다. 게다가 최신 업데이트 날짜가 글 작성일 기준(2023.06.21) 일주일 이전이라 여전히 유지보수되고 있어서 최신 스프링버전과 호환성도 어느정도 보장되었다고 볼 수 있습니다. 개인적으로 SpringBoot 3.1.0 기준으로 다음과 같이 세팅하니 정상적으로 동작하는 걸 확인했는데요, 혹시 저처럼 deprecated 메소드를 쓰는 것이 신경쓰이시는 분들을 위해 공유드립니다. build.gradle dependencies { //Blaze-Persistence implementation 'com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.9' implementation 'com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.9' implementation 'com.blazebit:blaze-persistence-core-impl-jakarta:1.6.9' } BlazePersistenceConfiguration.java @Configuration public class BlazePersistenceConfiguration { @PersistenceUnit private EntityManagerFactory entityManagerFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) @Lazy(false) public CriteriaBuilderFactory createCriteriaBuilderFactory() { CriteriaBuilderConfiguration config = Criteria.getDefault(); // do some configuration return config.createCriteriaBuilderFactory(entityManagerFactory); } } QuerydslBasicTest.java ..... JPAQueryFactory queryFactory; @Autowired CriteriaBuilderFactory cbf; BlazeJPAQueryFactory blazeQueryFactory; @BeforeEach public void testEntity(){ queryFactory = new JPAQueryFactory(em); // 이건 동시성 문제를 고민하지 않아도 됨, 해결됨 blazeQueryFactory = new BlazeJPAQueryFactory(em, cbf); ..... 적용 결과 기존 QueryDSL 세팅한 것에 추가로 세팅하시면, 만료된 메소드에 대해 Blaze-persistence 객체로 대체되는데요, 기존 querydsl 클래스를 상속 받는 형태여서 QueryDSL이 제공하는 메소드를 그대로 쓸 수도 있습니다. fetchResults는 fetchPage로 바꿔서 사용할 것을 권장하고 있다는 점 참고하시면 될 것 같습니다. 추가로 내부로직이라든지 설명이 더 필요하시다면 Blaze-persistence 릴리즈 노트 와 Blaze Persistence Document 를 참고하시면 좋을 것 같습니다. 이 글에 대해 지적 및 피드백 해주시면 정말 감사하겠습니다. 감사합니다. 여담 및 고민 : 개인적으로 이 라이브러리의 내부로직을 뜯어보면서 분석하고 검증할 수 있는 역량은 부족한지라 분석 및 검증하는 방법에 대해서 팁이라든지, 아니면 blaze-persistence 사용할 시 주의해야할 점이라든지 조언해주실 수 있으시면 정말 감사드립니다. 강의를 듣던 중에 서브쿼리가 발생하는 부분에서는 정상동작하지 않는 것을 발견했습니다. @Test public void findUserDto(){ QMember memberSub = new QMember("memberSub"); List<UserDto> memberDtoList = queryFactory //이건 blazeQueryFactory가 정상 동작하지 않음 .select(Projections.fields(UserDto.class, //생성자 필드 순서에 맞게 변수를 만들어야 한다. member.username.as("name"), // member.age 대신 서브쿼리로 다 최대 나이로 찍고 싶어 ExpressionUtils.as( JPAExpressions .select(memberSub.age.max()) .from(memberSub), "age") )) .from(member) .fetch(); for (UserDto userDto : memberDtoList) { System.out.println("userDto = " + userDto); } } QueryDSL 쿼리 /* select member1.username as name, (select max(memberSub.age) from Member memberSub) as age from Member member1 */ select m1_0.username, (select max(m2_0.age) from member m2_0) from member m1_0 blaze-persistence 쿼리 /* SELECT member1.username AS name, member1.age AS generatedSubquery_1 FROM Member member1 */ select m1_0.username, m1_0.age from member m1_0 blaze-persistence generatedSubquery라 하여, 서브쿼리를 하나의 alias로 처리를 해버렸는데, 후행으로 이 generatedSubquery 에 대한 정의가 따라오질 않습니다... 왜 이런 차이가 나오는지는 모르겠지만 blaze-persistence 활용할 때는 유의해야할 것 같습니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요, 김영한 강사님의 강의를 순차적으로 들으면서 개발에 대한 지식을 쌓고있는 학생입니다. 개발 자체가 처음은 아니지만, 스프링으로 개발을 이번에 처음으로 시도해보려고 해서 김영한 강사님의 강의를 듣고 있는데요, 제가 지금 강사님의 강의 내용을 토대로 일부 강의자료 내용 발췌( 대부분 이미지이며, 레퍼런스를 남기고 있습니다)하여 블로그를 작성하고 있습니다. 블로그는 단순히 저의 복습용으로 사용하고 있습니다만, 불연듯이 이러면 안되는게 아닌가라는 생각이 들었습니다... 제가 부탁 및 질문을 한가지 드리고 싶습니다. 혹시 제가 강사님의 강의내용을 블로그에 정리를 하는데 있어서 강사님의 강의자료의 내용이 일부 포함되어도 괜찮을까요,,? 만약 안된다고 하시면 지금이라도 모든 블로그 내용을 비공개로 전환하겠습니다!
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
.idea 내부 gradle.xml 원하는 버전의 xml 로 대체 .gradle 삭제 gradlew 원하는 버전의 gradlew 로 대체 gradle.bat 원하는 버전의 배치 파일로 대체 build.gradle, settings.gradle 도 마찬가지 invalidate cache -> 재시작 이러면 성공적으로 버전 업데이트 build.gradle, settings.gradle 디펜던시는 다 알아서 찾아서 챙겨와야합니다
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
다같이 배운거 응용해서 한번 만들어봐요~~
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
<%@ taglib prefix= "c" uri= " http://java.sun.com/jsp/jstl/core" % > 이부분 때문에 에러나는데 주소가 잘못된건가요? build.gradle 에 추가가 안되서 그런지 모르곘네요? 저거 지우고 forEach문 지우면 members.jsp경로로 들어가집니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
삭제된 글입니다
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인텔리제이 유료버전을 이용하고 있는데 강의에서 나온 자동완성 박스와 제 자동완성 박스 html 만 서로 다르고 다른 자동완성 동일 한데 어떻게 해야 되나요? 강의 나의 자동완성 박스
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8분 56초 모든것은 설계였다는 말에 감격해서 다시 한번 2회독해보려고 합니다...
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
OS:맥북 툴: 인텔리제이IDEA 강의 에서 사용하시는 단축키가 다른데 어떻게 해야되나요?
스프링 프레임워크는 내 손에 [스프1탄]
안녕하세요 강사님 지금 강사님 강의를 듣고 있는데 로그인 로직은 서비스 패키지를 만들어서 분리하여 관리해도 상관 없나요??
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
제가 현재 스프링과 jpa배우고 있습니다. 그런데 주변에서는 스프링 시큐리티의 난이도가 높다고 들어서 시큐리티 강의 찾고 있는데 아쉽게도 영한님의 시큐리티 강의는 없어서 고민이 생겼습니다. 스프링 시큐리티는 어떻게 공부해야 하나요?
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
현재 프론트에서 벡엔드로 전향을 한 신입 개발자입니다. 제가 프론트를 리액트 + Next를 이용해서 몇가지 작은 프로젝트를 통해서 어느정도 서비스를 구현할 수 있을 정도는 할 수 있습니다. 그래서 그런가 타임리프가 저에게 꼭 필요한가에 대해서 의구심이 들고 있습니다. 타임리프는 백엔드 개발자에게 어느정도로 필요한 기술인지가 궁금합니다.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의를 듣기전에 알아야 할 지식이 어떤게 있을까 해서 질문드립니다. 백엔드 개발자가 되고싶은데 자바는 어느정도 아는 상태이고 다음으로는 스프링에 대해서 공부하라고 하더라고여 그래서 찾아보던중 영한님 강의를 찾게 되었습니다. 정말 자바만 알아도 강의를 듣는데 문제가 없을까요? 또 백엔드 관련해서 database같은 것도 배워야 한다고 하는데 영한님 강의를 다 듣고 따로 database를 배워야 하는건가요?
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 자료로 나눠주신 index.html 의 링크에 url이 "/templates/basic~" 이런식이기에 해당 편 강의 1분 43초 즈음에 작성하는 @RequestMapping의 url은 ("/templates/basic") 이 되어야 합니다. 현재 녹화된 강의에는 @RequestMapping("/basic") 으로 되어있어서 index페이지에서 해당 링크 클릭하면 404 에러 뜹니다.
[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
질문하려는 것은 아니지만, 이클립스는 ES6을 지원 안 해서 백틱 사용하기가 어렵네요 ㅠㅠ HTML하고 값들 쉽게 넣을 수 있는데 말이죠...😭
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 부트 입문 강의 다 듣으면 다음 강의는 어떤 강의 부터 시작해야되나요?
자바 ORM 표준 JPA 프로그래밍 - 기본편
https://xively.tistory.com/43
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
3. 메시지, 국제화.pdf 파일 8쪽 상단> "ms.getMessage("hello", null, Locale.KOREA) : locale 정보가 있지만, message_ko 가 없으므로 messages 를 사용" 부분에서 "message_ko" 에 s 가 누락된 듯 합니다. messages_ko 아닌지요.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
동영상 10 초 앞으로 가기 나 뒤로 가기 안되나요? 강의 중간에 놓치면 처음부터 다시 듣고 있어서요