Back-end

·Back-end
@Entity란?JPA를 사용해 테이블과 매핑할 클래스에 붙이는 어노테이션이다.@Entity가 붙은 클래스는 JPA가 관리하는 객체가 된다. 🧐 무분별한 어노테이션 사용@Setter // 문제 1. 객체가 무분별하게 변경될 가능성 있음@Getter@NoArgsConstructor // 문제 2. 기본 생성자의 접근 제어자가 불명확함@AllArgsConstructor // 문제 3. 객체 내부의 인스턴스 멤버들을 모두 가지고 있는 생성자를 생성@Builder // 문제 4. 모든 매개변수가 생성자 param으로 들어가 객체 생성 시 받지 않아야 할 매개변수도 빌더에 노출@Data // 문제 5. 사용하지 않는 어노테이션을 따로 exclude 할 수 없기 때문에 개별 어노테이션 사용@Entitypublic..
·Back-end
IntelliJ IDEAJava 17Spring Boot 3.xGroovyjava.lang.NoClassDefFoundError:javax/persistence/Entityattempt to recreate a file for type qclasscould not find class file for querydslUnable to load class 'javax.persistence.Entity'.위 오류들 해결 🌲 멀티 모듈 X1. build.gradle에 Querydsl 의존성 추가dependencies { ... // querydsl implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor "co..
·Back-end
멀티모듈로 구성되어 있는 프로젝트의 테스트코드를 실행해 보았더니 Caused by: java.lang.IllegalStateException: Failed to introspect Class [AccountService] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@251a69d7] Caused by: java.lang.NoClassDefFoundError: repository/AccountRepository Caused by: java.lang.ClassNotFoundException: repository.AccountRepository 이렇게 다른 모듈로 구분되어 있는 클래스파일을 읽어오지 못한다는 에러가 발생했다. 우선 내 b..
·Back-end
스프링에서 JPA를 사용 시 application.yml 파일의 spring.jpa.hibernate.ddl-auto: create 설정을 통해 하이버네이트가 자동으로 테이블을 만들어주지만 실 배포 단계에서는 하이버네이트가 자동 생성한 sql을 사용하는 것은 좋지 않다. 1️⃣ schema.sql 파일 schema.sql 파일을 만들면 하이버네이트에서 기본적으로 만드는 ddl을 사용하지 않고 데이터베이스 테이블을 만들 수 있다. 해당 파일을 resources 디렉토리에 만들어준다. drop table if exists post; create table post ( id bigint not null auto_increment, title varchar(255), content text not null, p..
·Back-end
1️⃣ keypair.pem 다운로드 EC2를 처음 생성할 때 받은 keypair를 잘 보관해 둔다. (딱 한 번만 다운로드 가능) 2️⃣ 경로 이동 후 keypair의 권한 변경 keypair가 있는 곳으로 경로 이동 $ cd ~keypair경로 내 경우 > cd /Users/컴퓨터이름/Downloads keypair의 권한 변경 $ chmod 600 keypair이름.pem keypair 이름이 abcd.pem 일 경우 > chmod 600 abcd.pem 을 터미널에 입력해 준다. 3️⃣ 터미널에서 접속 터미널에서 접속 $ ssh -i key-pair-이름.pem username@EC2퍼블릭IPv4DNS > ssh -i /key-pair-이름.pem username@EC2퍼블릭IPv4DNS 여기서 ..
·Back-end
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); return http.build(); } Spring Security 코드를 작성하면서 CSRF 공격에 대비를 하지 않고 이를 비활성화시켜도 되는지에 대한 의문이 들었다. 이에 대해 잘 모른 채로 보안 코드를 작성하는 것은 옳지 않다고 생각되어서 CSRF 보안 코드를 왜 비활성화시키는지 찾아 정리해 보았다. 1. CSRF(Cross-Site Request Forgery) 1.1 Cookie & Session CSRF를 알아보기 앞서 쿠키와 세션에 대한 간단한 이해가 필요하다. 사용자가 특정 서버에 로그인하면 일반적으로..
·Back-end
@Controller 🆚 @RestController @Controller 기존의 Spring MVC가 view을 사용하기 때문에 view(화면)를 return 데이터는 ModelAndView객체를 이용해 Controller에서 Client로 전달 @ResponseBody 어노테이션을 사용 시 View를 return하지 않고 Controller에서 직접 데이터 return 가능 @RestController 모든 메서드는 @ResponseBody 어노테이션 기본으로 작동 컨트롤러 클래스의 각 메서드마다 @ResponseBody을 추가할 필요 X View가 필요없는 REST 방식에서 주로 사용 ResponseEntity란 스프링에서 제공하는 ResponseEntity 타입은 개발자가 직접 결과 데이터와 HT..
·Back-end
H2란?Java로 작성된 오픈소스 RDBMS스프링 부트가 지원하는 인메모리 관계형 데이터베이스인메모리로 띄울 경우 애플리케이션을 재시작할 때마다 초기화별도의 설치 필요 없음로컬 환경, 테스트 환경에서 많이 사용H2 설치https://www.h2database.com/html/main.html 에서 Download All Platforms를 클릭한다. H2 Database EngineH2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Bro..
·Back-end
1. .gitignore란? 민감한 정보가 들어있는 파일이나 형상관리할 필요가 없는 파일들은 git에서 더이상 추적(track)하지 않도록 .gitignore 파일에 추가한다. - .gitignore 파일은 프로젝트 디렉토리 최상단에 위치하게 한다. 2. .gitignore 사용법 1) 작성패턴 - #로 시작하는 라인은 주석, 무시한다. - 표준 glob 패턴을 따른다. - 디렉토리는 끝에 슬래시(/)를 사용해 표현한다. - 느낌표(!)로 시작하는 경우는 예외로 처리한다. # : comments # 특정 확장자를 가진 모든 파일 무시 *.txt # 예외인 경우 !lib.a # 현재 경로에 있는 fileName 무시 /fileName.txt # 특정 디렉토리의 모든 파일 무시 build/ # 특정 디렉토리..
서채리
'Back-end' 카테고리의 글 목록 (7 Page)