본문 바로가기

Backend/Java

(8)
DriverManager 이해하고 사용하기 안녕하세요, 이번 글에서는 Java에서 Connection을 얻는 방법 중에 하나인 DriverManager를 통한 커넥션 획득에 대해 적어보겠습니다. DriverManager앞선 글(JDBC)에서 애플리케이션에서 Database를 사용하려면 아래 세 가지 행위가 필요하다 말씀드렸는데요,커넥션을 연결한다.SQL을 Database 서버에 전달한다.결과를 응답받는다.JDBC에서는 Connection을 연결한 뒤 반환받는 Connection Interface를 통해 SQL을 전달하고, 커밋 혹은 롤백을 할 수 있도록 구성되어 있습니다. Connection을 획득하면, 해당 객체를 활용해서 그 뒤의 작업들을 하실 수 있습니다. 따라서 각 Database 벤더사들은 해당 Connection을 가져오는 방법을 구..
JDBC 이해하고 사용해보기 안녕하세요, 오늘 포스팅에서는 JDBC란 무엇이며 어떻게 사용하는 지에 대해 간략하게 포스팅을 해보려고 합니다. 애플리케이션에서 Database를 사용하는 방법흔히 서비스를 개발하는 백엔드 엔지니어들은 애플리케이션을 개발하면서 database를 데이터 저장 수단으로 사용하게 됩니다. database를 순수하게 사용하려면 크게 세가지의 과정이 필요한데요. 커넥션을 연결한다.SQL을 Database 서버에 전달한다.결과를 응답받는다.이를 도식화 하면 아래 그림과 같이 사용되게 됩니다. 만약 내가 개발한 서버가 Oracle DBMS를 사용한다면 Oracle의 Connection을 획득하고, Oracle sql을 전달하고, 결과를 받아서 애플리케이션 서버에서 사용하면 됩니다.문제점이렇게 개발되어 운영을 잘 하다..
[Java] JaCoCo를 활용하여 code coverage 측정하기 안녕하세요. 이번 포스팅에서는 JaCoCo라는 Java Code Coverage Library를 활용하여 코드 커버리지를 간단한 예제와 함께 측정해보겠습니다. 우선 Code Coverage란 무엇일까요? Code Coverage Code Coverage란 소프트웨어에서 test code가 본 코드를 얼마나 커버하고 있냐를 측정해주는 지표입니다. 테스트를 진행하였을 때 코드 자체가 몇% 나 실행되었느냐로 생각하실 수 있을 것입니다. 원래 원칙적으로 test code는 모든 시나리오에 대해서 설계되어야 합니다. 실제로 배포하는 서비스라면 더욱더 모든 시나리오를 커버하려 합니다. 하지만 현실적으로 내가 지금 작성한 테스트 케이스가 모든 케이스를 커버하는지를 객관적인 지표로 확인할 수 있는 방법 중에 하나가 C..
[Java] Collections framework 이해하기 이번 포스팅에서는 Collections Framework에 대해 이해하는 시간을 갖도록 하겠습니다. 본 포스팅은 생활코딩님의 Java Collections framework를 참고하였습니다. (https://www.youtube.com/watch?v=KaPbVAxi5LE) 1.ArrayList import java.util.ArrayList; public class MainClass { public static void main(String[] args) { String[] objectArr = new String[2]; objectArr[0] = "1"; objectArr[1] = "2"; // objectArr[2] = "3"; ArrayList al = new ArrayList(); al.add("..
[Java] 제네릭 이해하기 안녕하세요. 오늘 포스팅에서는 JDK1.5 이후로 추가된 자바의 제네릭스에 대해 포스팅해보겠습니다. 1. 제네릭이란? Generics add stability to your code by making more of your bugs detectable at compile time. – Oracle Javadoc 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. – 생활코딩 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. – 자바의 정석 기본적으로 클래스 내부에서 사용할 데이터타입을 사전에 정의하지 않기 때문에 인스턴스 생성 시에 해당 클래스 안의 데이터 타입을 동적으로 넘겨줄 수 있습니다. 또한 ..
[Java] static 제어자 이해하기 이번 포스팅에서는 자바의 static 키워드에 대해 이해해보는 시간을 갖도록 하겠습니다. static 키워드는 '클래스의' 혹은 '공통의'라는 의미를 내포하고 있습니다. 가령 class Cards { static int width = 5; static int height = 4; String kind; int numberOfCard; public Cards(String k, int n) { this.kind = k; this.numberOfCard = n; } } 다음과 같은 class가 있다고 해보겠습니다. 저희는 Card Class를 통해 여러 가지의 Card 인스턴스를 만들 수 있습니다. 가령 클로버 4의 카드, 스페이드 A의 카드, 하트 3의 카드 등등 문양별로, 숫자별로 카드를 만들 수 있습니다..
[Java] 프록시 패턴이란? 원래 Spring 카테고리에 AOP에 대한 글을 포스팅하고 있었는데, Spring에서 제공하는 AOP를 이해하기 위해서는 기본적인 프록시 패턴에 대한 이해가 필요하기 때문에 프록시 패턴에 대한 포스팅을 먼저 진행하기로 했다. 우선 본 포스팅을 진행하기에 앞서 프록시 패턴에 대해 잘 설명한 reference가 있어서 참고하였다. https://refactoring.guru/design-patterns/proxy Proxy There are dozens of ways to utilize the Proxy pattern. Let’s go over the most popular uses. Access control (protection proxy). This is when you want only specifi..
[JAVA] JVM과 JAVA code의 실행 과정 Java... 흔히들 우리나라에서 가장 많이 사용되는 언어가 무엇인지에 대해 묻는다면, Java라고 대부분이 답할 것이다. Java는 몇 년도에 누가 만들었고, 라는 형식적인 글보다는 왜 Java가 선택받았는지에 대해 나는 궁금했다. 필자는 C++/Python을 주로 사용하여 그동안 프로젝트를 대부분 진행하였다. 그 이유는 OOP(Object-Oriented Programming)을 메인으로 코드를 디자인하지만, 어느 정도 절차적인 언어의 형식도 있어야 뭔가 코딩하는 입장에서 더 편했다. (개인적으로 C++/Python 코드가 Java 코드보다 더 예쁘다...) 위 두 언어와 다르게 Java는 모든 코드가 Class로 이루어진 객체 지향 프로그래밍 언어이며 따라서 어느정도 초심자의 입장에서 진입장벽이 있..