전체 글

구경하고 가세요
SpringBoot/활용

[Spring] Hikari 이용하여 데이터베이스 연결 관리하기

0. 시작하기 전 JDBC 란? JDBC( Java Database Connectivity ) 란 자바에서 데이터베이스에 접속하기 위한 표준 인터페이스를 뜻함 데이터베이스와 연결할 때마다 새로운 커넥션을 생성 & 연결하는 비용을 줄이기 위한 기술 JDBC 커넥션 풀 구현체란? 커넥션 풀링 기능을 제공하는 라이브러리 데이터베이스에 연결할 때 생성된 커넥션 풀에서 사용 커넥션 풀 크기, 커넥션 대기 시간, 커넥션 최대 최소 수 등 설정 가능 구현체 종류 : Apache Commons DBCP, HikariCP, Tomcat JDBC 등 Hikari 란? Spring Framework에서 사용되는 데이터베이스 커넥션 풀 라이브러리 HikariCP라고도 불림 빠르고 경량화된 JDBC 커넥션 풀 구현체 Sprin..

ORM/JPA

[JPA] 복합키 적용해서 테이블 생성하기 @EmbeddedId, @IdClass

테이블에 PK가 하나가 아닌 여러 개 일 경우 설정하고자 한다. 1. 시작하기 전 @EmbeddedId : ID 필드로 별도의 객체를 사용할 수 있도록 도와주는 어노테이션 @IdClass : 해당 컬럼이 PK임을 알려주는 어노테이션 Serializable : 생성한 객체를 파일로 저장하거나, 저장한 객체를 읽을 경우 또는 다른 서버에서 생성한 객체를 받기 위해 구현하는 인터페이스 (직렬화) 2. 전체 파일 파일은 두 개로 나누었다. PK 는 따로 한 파일에 (Seq.java) 모아두었고 테이블은 Storage.java 에 생성하였다. Seq.java 파일 import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.per..

ORM/JPA

[JPA] JPA For queries with named parameters 오류 해결

JPA 를 사용하다가 하드코딩으로 쿼리를 작성해주어야 하는 상황이 발생한다. 그런데 작동하던 쿼리문이 본문의 제목과 같은 오류를 내뱉으면서 작동하지 않았다..! 검색해보니 Param 이 존재하지 않아서였다 @Query(value = "select * from 테이블명 where 테이블 컬럼명 = :코드컬럼명 order by 정렬컬럼명 desc limit 숫자", nativeQuery = true) 해당되는엔티티 findByAll(@Param(value = "코드컬럼명")String 코드컬럼명); (@Param(value = "코드컬럼명") 만 추가해주면 끝 !

공통

[ect] 객체지향 설계 SOLID 5 원칙

0. 들어가기 전 알고 있으면 좋은 것 클린코드로 유명한 로버트 마틴이 5가지 원칙을 정리 다형성이란? 객체 지향의 4가지 틍성 중 하나로 하나의 타입에 여러 객체를 대입 가능한 것을 의미 구현 방법 : 오버로딩, 오버라이딩, 함수형 인터페이스 클라이언트와 서버? 클라이언트 = 호출, 서버 = 응답 호출되는 코드를 서버코드라고 하면 코드를 호출하는 모든 코드 (객체, 클래스)가 클라이언트 코드 1. SRP 단일 책임 원칙 (single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 ..

SpringBoot/활용

[ Spring 기본 ] Jpa 이용해서 db 에 entity 추가

0. 환경 - DB : Postgres - DBeaver 을 사용하여 확인 - Spring boot 환경에서 Jpa를 이용하여 테이블 생성 1. 연동하기 - src > main > resources > application.yml 파일 spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:포트번호/스키마이름 platform: postgres username: 지정한이름 (미설정시 기본) password: 지정한비번 (미설정시 기본) jpa: hibernate: ddl-auto: create # 처음에 create로 작성하시고 이후에는 none show-sql: true database: po..

데이터베이스/Postgres

[Postgres] Postgres 새로운 DB 생성

1. psql에서 기존 이름, 암호 입력 2. 유저 생성 create user 사용자이름 with password '비밀번호'; 3. DB 생성 create database 데이터베이스이름 with owner 사용자이름; 4. 새로 추가한 유저로 DB 접속하기 \c 데이터베이스이름 사용자이름 5. Schema 생성 (선택) create schema 데이터베이스이름 authorization 사용자이름; 6. 권한 부여하기 ALTER USER 사용자이름 createdb replication; 7. 확인하기 \du \dn+ \l+

SpringBoot/활용

[ Spring 기본 ] Spring 환경 IntelliJ에 구축

IntelliJ 다운로드 https://www.jetbrains.com/ko-kr/idea/download/#section=windows (위의 사이트에서 다운로드 진행) 원하는 것으로 다운로드 진행하면 되나 무료 버전인 Community Edition 으로 다운로드 함 Spring 환경설정 1. Spring Initializr 이용하기 https://start.spring.io/ 사이트에서 원하는 버전과 프로젝트 명을 지정하고 다운로드한다. 2. IntelliJ에서 폴더 열기 1번에서 다운받은 폴더의 압축을 해지한 경로를 확인하고 IntelliJ에서 열어준다. 위의 사진처럼 빌드되지 않는다면 1번 단계에서 Spring Boot 의 버전을 2.7.7로 바꿔보시는걸 추천드립니다 추가정보 1. applica..

공통

[Git] 검색하기 귀찮아서 모아둔 명령어

1. warning: in the working copy of 어쩌구 오류날 때 - 윈도우 버전 git config --global core.autocrlf true 2. 새 레파지토리에 기존 파일 연동할 때 git remote add origin "원격저장소 https" git pull origin main git add --all 또는 git add . git commit -m "커밋할 내용" git push origin main 출처 https://cocoon1787.tistory.com/728 [Git] "LF will be replaced by CRLF in..." 에러 해결 방법 warning: LF will be replaced by CRLF in app.js. The file will ha..

ssddo
ssddo-story