개발하는 쿠키
article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 01. JPA 소개
Coding/computer science 2023. 8. 21. 23:50

JPA 장점 CRUD SQL을 알아서 처리한다. 객체 모델링과 관계형 데이터베이스 사이의 차이점을 해결한다. 데이터베이스 종류를 쉽게 바꿀 수 있다. MySQL -> 오라클 SQL을 직접 다룰 때 발생하는 문제점 자바로 작성한 애플리케이션은 JDBC API를 사용해서 SQL을 DB로 전달한다. 반복, 반복 그리고 반복 객체를 데이터베이스에 CRUD 하기 위해서는 많은 SQL, JDBC API 가 필요하다. 각각의 테이블마다 이 작업을 반복해야 하는데, 그럴 때마다 비슷한 코드를 작성해야 한다. // 회원 객체 public class Member{ private String memberId; private String name; } // 회원용 DAO public class MemberDAO{ public..

article thumbnail
BUG | Mapstruct NullPointerException because "sym" is null
Coding/trouble shooting 2023. 7. 10. 14:43

문제를 발견하게 된 과정 Oracle Open JDK17에서 빌드할 땐 잘 되는데 Gitlab CLI로 DEV에 Build하면 오류가 발생했습니다. builds/[파일경로]/[파일명].java:11: error: Internal error in the mapping processor: java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.code.Symbol.getEnclosingElement()" because "sym" is null 문제 코드 import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.ReportingPolicy; @Mapper(com..

article thumbnail
JPA Proxy
Coding/computer science 2023. 6. 21. 15:00

JPA 프록시란? 프록시는 JPA에서 지연 로딩(Lazy Loading)을 구현하기 위해 사용되는 기술입니다. 지연 로딩(Lazy Loading)은 DB에서 연관된 엔티티를 필요한 시점에 가져오는 기능으로 즉시 로딩(Eager Loading)과 반대되는 개념입니다. JPA프록시는 실제 엔티티 대신 가짜 엔티티를 가져옵니다. 엔티티 A, B가 연관 관계에 있다고 가정할 때, A의 실제 엔티티를 조회하면서 B의 가짜 엔티티를 가져오는 것입니다. 그리고 B를 조회할 때, 진짜 엔티티를 가져옵니다. 따라서 B가 필요할 때까지는 조회 쿼리를 실행하지 않고, 프록시 객체를 반환하기 때문에 성능을 최적화할 수 있습니다. JPA 프록시 작동 원리 1. Order 클래스와 Customer 클래스가 다 : 1 의 연관관계..

article thumbnail
BUG | repository flush 할 때 연관관계는 매핑이 안되는 오류
Coding/trouble shooting 2023. 6. 20. 21:20

문제를 발견하게 된 과정 테이블 A, B 가 연관관계 매핑이 돼있고, B가 널인 상태일때, 서비스에서 A, B를 저장하고, flush를 한 후, A를 이용해서 B를 가져오면 널을 가져오게 됩니다. => 문제상황 하지만, 만약 B가 널이 아닌 상태에서 A를 이용해 B를 가져오면 널이 아닌 객체를 잘 가져옵니다. @Table @Entity @Getter @Builder public class A { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToOne(mappedBy ="A") private B b; } @Table @Entity @Getter @Builder public cl..

article thumbnail
Spring JDBC를 이용한 데이터 접근
Coding/computer science 2023. 6. 15. 15:43

스프링 Application에서 DBMS에 접근하는 방법 (간단한 버전) 1. 데이터베이스 드라이버 로드 Maven 또는 Gradle을 사용해서 JDBC 드라이버를 프로젝트에 추가합니다. 2. 데이터베이스 연결 설정 DB 연결정보를 XML, YAML, Properties 파일 또는 애노테이션을 통해 설정합니다. // properties 파일 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=username spring.datasource.password=password 3. JDBC 템플릿 사용 DB 연결 설정 정보를 받아와서 내부적으로 DB와 연결을 설정합니다. 그리고 SQL문을 실행하고 결과를 ..

article thumbnail
BUG | DB 커넥션 부족 문제 해결 비결
Coding/trouble shooting 2023. 6. 1. 03:05

HikariCP - DB Connection Error 문제를 발견하게 된 과정 고객 서비스를 만드는 백엔드 프로젝트의 운영환경에서 오류가 발생했습니다. o.h.engine.jdbc.spi.SqlExceptionHelper : HikariCP - Connection is not available, request timed out after 31875ms. //오류 2023-05-08 22:12:15.385 ERROR 1 --- [io-8080-exec-74] o.h.engine.jdbc.spi.SqlExceptionHelper : HikariCP - Connection is not available, request timed out after 30094ms. 백엔드 프로젝트가 Hikari CP 커넥션을 ..

article thumbnail
WebRTC (8) | 온라인 발표 서비스 "북쪽행성" 개발기
Coding/project 2021. 8. 18. 03:47

👊 시작하기 Github 에서 프로젝트 설명을 자세하게 보실 수 있습니다. 북쪽행성 방문하기 Web RTC (Web Real Time Communication) 프로젝트로 온라인 발표 시스템을 개발했습니다. 발표자의 화상 영상 위에 발표자료를 띄운 서비스인데요. 이 서비스를 이용해 청취자는 발표자의 비언어적 표현, 언어적 표현을 한 번에 볼 수 있어요. WebRTC 프로젝트를 진행하면서 삽질했던 경험과 느꼈던 점을 얘기해볼게요. 삽질 기록 여러 명 통신 상황에서 발표자료 띄우기 N:N 상황에서 ImageOverlayFilter 띄우기 문제를 발견하게 된 과정 Kurento 미디어 서버는 웹에서 실시간으로 통신하는 기능을 제공합니다. (WebRTC) 그룹콜 상황에서 Kurento 미디어 서버에 ImageO..

article thumbnail
WebRTC (6) | OpenVidu 튜토리얼 시작하기
Coding/project 2021. 8. 3. 00:30

👊 시작하기 Kurento의 상위 버전인 OpenVidu를 실행해보려고 합니다. 많은 예제 중 openvidu-js-java 를 실행해보겠습니다. Ubuntu 20.04 를 사용했습니다. 위 사진에서 p1는 자신의 모습이고 p2는 chrome 시크릿 창으로 접속한 remote video입니다. 1. 도커 설치하기 $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-ap..

반응형