| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 오라클
- 데이터베이스
- spring
- 백엔드
- 검색
- redmine
- db
- 레드마인
- spring aop
- Database
- java
- 자바
- 스프링
- Si
- 개발자
- 이슈관리
- PreparedStatement
- kibana
- 인덱스
- AOP
- elasticsearch
- 프로젝트관리
- 일감관리
- 비전공개발자
- 엘라스틱서치
- It
- frontend
- PM
- backend
- 웹프론트
- Today
- Total
목록java (20)
리타의 저장소
같이 스터디를 하는 스터디원들과 PreparedStatement에 대해서 이야기를 하다가, 실제 담당하고 있는 서비스에서 PreparedStatement를 사용하냐고 물었을 때 다들 사용하지 않는다고 했다. 대체로 JPA 혹은 Mybatis를 사용중이라 업무를 하면서 마주할일이 거의 없다는 것이었다. 근데, 또 여기서 궁금한게 생겼다. 과연 진짜 그들은 PreparedStatement를 사용하지 않는 것일까? 핵심부터 말하자면JPA, MyBatis 모두 실제 SQL 실행할 때 JDBC API를 쓰고, 그 안에서 PreparedStatement를 사용한다.즉, 직접 pstmt.setInt(1, xxx) 라고 쓰지 않아도 프레임워크가 내부에서 알아서 PreparedStatement를 만들고 파라미터를 바인..
SQLP를 공부하다 보니, Database 성능 튜닝의 3대 요소 중 하나에 DB Call 최소화가 있었다. 데이터베이스 Call 최소화 Parse Call Excute Call Fetch Call 이와 관련해서 java단에서 Array Processing 기법으로 처리한다는 어떤 blog의 글을 읽고, 스터디원들에게 공유를 했었는데, DB call 관련해서 개발자의 입장에서 생각해봤을 때 어떤식으로 코드에서 사용될 수 있을 것 같냐는 추가 물음에 조금 더 생각을 해보기로 했다. DB Call 최소화 결과적으로 Java에서도 DB 퍼포먼스 최적화에 대하여 고민을 할 수 밖에 없다.Call을 줄인다는 관점에서..용어뜻성능에 미치는 영향최소화의 의미Parse callSQL 문장..
Spring에서 PreparedStatement 사용 방식1. 직접 사용 (기본 JDBC 스타일)DataSource에서 커넥션을 받아와서 직접 PreparedStatement를 만들어서 사용 @Autowiredprivate DataSource dataSource;public User findUserById(int id) throws SQLException { String sql = "SELECT * FROM users WHERE id = ?"; try (Connection conn = dataSource.getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql)) { // .setInt(int pa..
신기한 점 발견앞서 Java에서 DB 커넥션을 얻는 방법 #1에서 DriverManager & DataSource 방식에 대해서 알아보다보니, 실제 소스에 Oracle 커넥션 맺는 부분이 당연히 DataSource 방식일거라 생각했는데 아니었다. PostgreDbcp와 다르게 Oracle의 ConnectionDbcp는 .getConnection() 메서드를 까보니, DriverManager 방식으로 커넥션을 생성 중이더라. 분명 DriverManager방식은 실제 운영하는 서비스에서는 잘 안쓰인다고 했는데, 왜 이렇게 쓰인걸까,,,?찾아보니 이건 그냥 DriverManager.getConnection() 방식도 아니었다.소스에서 젤 중요한 부분은 "jdbc:apache:commons:dbcp:...” ..
DataSource vs DriverManager1. PostgreDbcp.getDataSource().getConnection();DataSource를 통해 커넥션을 얻는 방법(DataSource = 커넥션 풀링(Connection Pool) 기반)2. DriverManager.getConnection(url, user, password);DriverManager를 통해 직접 커넥션을 얻는 방법(매번 새로운 커넥션을 만들어서 사용) 차이점 요약구분DataSource 방식DriverManager 방식커넥션 생성 방식미리 만들어진 커넥션 풀에서 "빌려옴"매번 새로운 커넥션을 "직접 생성"성능빠름 (커넥션 재사용)느림 (생성 비용 큼)관리커넥션 풀 관리 기능 (최대/최소 수량, idle 관리 등)관리 기능 ..
PreparedStatement란?SQL 문을 미리 컴파일해둔 객체.Java의 java.sql 패키지에 포함돼 있다.주로 SQL Injection(보안 문제)을 막기 위해, 그리고 쿼리 성능 최적화를 위해 사용.Connection 객체의 prepareStatement() 메서드를 이용해서 만든다.그냥 Statement vs PreparedStatement 구분 Statement PreparedStatement SQL 처리 방식SQL을 실행할 때마다 파싱, 컴파일SQL을 미리 컴파일 후 실행성능느림빠름 (특히 반복 실행 시)보안SQL Injection 취약파라미터 바인딩으로 Injection 방지코드 작성문자열 조작 많음깔끔한 파라미터 바인딩 가능PreparedStatement 기본 사용법// 1..
Programmers 가장 먼 노드 - 그래프 📎문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항노드의 개수 n은 2 이상 20,000 이..
개발자로 살아가게 된지 벌써 2년이나 되었다.개발자 이거 근데 맞는 건지 ^ + ^ 아직도 확신이... 크흠..2년차 주니어 개발자 ....여전히 나는 "비전공자"인 개발자이다.공부를 좀 더 많이 했어야 했는데 흠냐..이 핑계 저핑계로 그렇게 열심히 하진 못했던 것 같다.지난 약 2년 간의 회사생활을 돌아봤을 때, 기술보다는 비즈니스 로직적인 부분에 있어서는 분명한 발전이 있었으나...기술적인 발전은...이제 하려 한다 ㅎㅎ.. 요즘 그래서 열심히 하고 있다! (아마도?)다행히 이런 멍청한 나지만,, 팀원들에게 정말 많은 부분 도움을 받고 있다. 많이 물어보면서 나름 성장(?) 중이다.2년차를 보내고 이제 햇수로는 3년차인데 열심히 살아야지.. 암요 암요..영업양수도2024년은 정말 바빴다. 나는 운영을..
점점 주어지는 일이 많아지고 있다.운영이라서 개발은 거의 안하겠지 싶었는데, 점점 개발건이 쌓이는 중이다.. 게다가 개발을 하고 싶다(?)며 초반에 입을 놀려대갖고 고대~~로 부메랑이 되어 되돌아온 일감... 얼마전 팀장님이 지시하신(?) 업무가 있는데,,요새 문의도 워낙 많고 일도 많고,, 이걸 빨리 끝낼 수 있을지 모르겠지만.....우선은 그냥 하고 있다. 여전히 일정 부분 무료한 것들이 있다. 입사 초반엔 로직을 파악하기 급급했다면, 지금은 내가 담당하는 파트 말고도 다른 시스템 전체적으로 소스코드를 탐방다니는 여유가 생겼다. 근데 볼수록 이상한 코드들이 참 많다.. 컨벤션도 크흠.... 커밋기록도.. 마찬가지다..근데 그 덕분에 남의 코드 읽는 능력이 상승중이다.후후 좋은건지 나쁜건지 모르겠지만...
SSAFY를 마치며..1년의 취준 그리고 코로나,,그리고 취준,,그리고 코로나,, 약 3년의 문과생으로 취준생 기간을 가졌으나,결국 고배를 마시고 말았다..... 하. 지. 만 마지막 보루로 남겨놓았던 SSAFY 라는 돌파구가 있었으니........ 별다른 선택지가 없기에4차산업혁명에 이 한몸 내던져 보기로 마음 먹었다. 그렇게 SSAFY에서 장장 1년의 기간을 보냈다.비전공 JAVA반을 선택했는데,의외로 같은 반에서 나같은 찐찐 문과생은 찾아보기 힘들었다.그래서 일까..사실 한동안너~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~무개발이 맞지 않는 듯 하여... 문돌이시절에 난사해두었던 많은 회사들의 면접을 보러다니느라 개발공부는 뒷전이었다.그렇게 허비한게 5개월... 그럼에도, 지..