STUDY

    [TIL] SpringBoot dependency 버전 맞추기!

    예전 프로젝트에서 QueryDSL을 사용하려고 할 때, 구글링을 해보는데 어떻게 초기설정을 맞춰야 할지 버전마다 너무 달라서 초기설정에만 하루가 걸렸던 적이 있다. 오늘 강의를 듣다가 그 시간을 줄일 방법을 찾았다. Dependency Versions docs.spring.io 지금의 스프링부트에 의존성을 추가할 때 몇 버전을 추가해야 좋은지 상세히 나와 있는 페이지다!! 전 프로젝트에서 진작 알았다면 좋았을 것을 ㅠㅅㅜ 지금 배우고 있는 JPA 강의가 예전 강의라서 의존성 버전을 다르게 해줘야 할 필요성이 생겼는데 강의에서 이 페이지로 가면 지금의 스프링부트와 궁합이 잘 맞는 버전을 찾을 수 있다고 가르쳐주셨다..! 다음에 새 의존성을 추가해야 할 일이 생기면 여기를 참고해서 적으면 될 것 같다!

    [4-2] Entity Mapping - 객체&테이블, 필드&컬럼

    [4-2] Entity Mapping - 객체&테이블, 필드&컬럼

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 객체와 테이블 매핑 @Entity, @Table @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 ※ 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) : 내부 동작하는데 필요하기 때문에(객체를 프록싱..하는데 쓰인다고 함!) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X → 추후에 왜 이 주의점들을 지켜야 하는지 알아보고 기록하자. @Entity 속성 name JPA에서 사용할 엔티티 이름을 지정한다. 기본값 : 클래스 이름을 그대로 사용(예 : Member) 같은 ..

    [Git] fork가 아니라 같은 Repo의 Collaborator일 때, Pull Request 방법 기록(레포지토리 파는 사람 / Collaborator)

    [Git] fork가 아니라 같은 Repo의 Collaborator일 때, Pull Request 방법 기록(레포지토리 파는 사람 / Collaborator)

    짧은 프로젝트라고 가정하고 Develop 브랜치까지 파지 않고 Main 브랜치와 각각의 기능별 브랜치를 판다고 가정. (Develop 브랜치를 파면 나중에 Develop 브랜치에도 규칙을 적용시켜 주면 된다.) 레포지토리 파는 사람이 할 일 1. 깃에서 레포지토리를 판다. README도 추가해 놓는다. README추가는 옵션! 근데 만들어놓는게 난 더 편했다. 내가 bash에서 명령어를 직접 입력하는데 README를 추가해놓지 않으면 깃허브에서 주는 명령어로 하는데 그거로 하다보면 오히려 헷갈린다.. 2. Settings - Branches - Add branch protection rule main 브랜치의 rule을 정하려면 Branch name pattern에 main을 적고 Protect matc..

    [TIL] SQLSyntaxError ( 컬럼명 like 문제)

    발생한 예외 create table posts ( id bigint not null auto_increment, created_at datetime(6), modified_at datetime(6), contents varchar(255), like bigint, title varchar(255) not null, user_id bigint, primary key (id) ) engine=InnoDB" via JDBC [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 'like bigint, title varchar..

    [TIL] AnnotationException 예외 발생 (mappedBy)

    발생한 예외 내용 Caused by: org.hibernate.AnnotationException: Collection 'com.example.jisoo_blog.entity.Post.comments' is 'mappedBy' a property named 'posts' which does not exist in the target entity 'com.example.jisoo_blog.entity.Comment' 해석해보면 Post의 comments 콜렉션이 posts와 mappedBy되어 있는데, Comment Entity에는 그런 필드명이 없다. 는 것 같다. Post의 코드 @Table(name="posts") public class Post extends Timestamped { @Id @Gen..

    [TIL] DefaultHandlerException 예외발생(추가공부 필요)

    이슈 GET요청을 받아올 때, 다음과 같은 예외 발생 2023-07-14T04:34:09.773+09:00 WARN 11788 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException : No acceptable representation] 컨트롤러 단의 코드 @GetMapping("/view/all") public ResponseEntity getPosts() { PostsResponseDto result = postService.getPosts(); return ResponseEntity.ok().body(result)..

    [TIL] http.authorizeHttpRequests.requestMatchers API 설정(정확한 해결 방법 추가 기록 필요)

    이슈 스프링 부트로 블로그를 만드는 과제를 하고 있는데 내가 작성한 포스트 조회에 대한 API 명세서는 이러하였다. 이름 Method URL 전체 게시글 조회 GET /JisooBlog 선택 게시글 조회 GET /JisooBlog/1 이 두 기능은 인가 필터와 인증 필터를 거치지 않고 비회원에도 보여질 수 있게끔 하기 위해서 설정이 필요했다. WebSecurityConfig 클래스에서 http.authorizeHttpRequests.requestMatchers 설정을 해주면 되겠다 생각해서 http.authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers(PathRequest.toStaticResource..

    [4-1] JPA - DDL 자동 생성

    [4-1] JPA - DDL 자동 생성

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 데이터베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성(Data Definition Language : 데이터베이스 스키마를 정의하는 일련의 SQL 명령), 어플리케이션 실행 시점에 Entity를 인식하여 데이터베이스 테이블을 만들고 인식된 Column을 자동 생성한다. 테이블 중심 → 객체 중심 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 이렇게 생성된 DDL은 개발 장비에서만 사용, 운영에서는 사용 X 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 속성 : hibernate.hbm2ddl.auto create : 기존테이블 삭제 후 다시 생성 ( DROP + CREAT..

    [3-4] 준영속 상태

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 준영속 상태 영속상태에서 준영속 상태가 되는 것 영속 상태가 되는 경우 : persist(), find()해서 1차 캐시에 없을 때 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(datached) 영속성 컨텍스트가 제공하는 기능을 사용하지 못함 ( ex. 더티체킹 ) 준영속 상태로 만드는 방법 em.datach(entity) 특정 엔티티만 준영속 상태로 전환 Member member = em.find(Member.class, 150L); // 영속 상태 member.setName("AAAAA"); em.detach(member); // 준영속 상태 System.out.println("========================="); tx..

    [3-3] 플러시

    인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의노트 플러시란? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것! 트랜잭션이 커밋될 때 플러시가 일어난다. 영속성 컨텍스트의 쿼리를 DB에 날려준다. 플러시가 발생되면 어떤 일이 일어나는가? 변경 감지가 일어남. 수정된 엔티티에 대하여 쓰기 지연 SQL 저장소에 쿼리가 등록된다.등록된 쿼리를 DB에 전송(등록, 수정, 삭제 쿼리) 플러시가 발생한다고 해서 DB 트랜잭션이 커밋되는 것은 아니다. 영속성 컨텍스트를 플러시하는 방법 직접 쓸 일은 없는데 테스트해보려면 알아야 한다. 1. em.flush() > 직접 호출 Member member = new Member(200L, "member200"); em.persist(member); em..