부제: Spring으로 JDBC연동하기, Spring으로 DB조회하기 ★관련 링크Spring과 DB이야기 - 2. JdbcTemplate에서의 UPDATE, INSERT Spring과 DB이야기 - 3. Transaction 처리 JDBC의 구현과 DataSource JAVA를 활용하여 애플리케이션을 개발할 때, DB접근이 필요하면 보통 JDBC를 쓴다. JDBC를 사용해본 사람이라면 아래와 같은 방식으로 개발했을 것이다. public Student getSingleStudent (String studentNum) throws SQLException { Student student; try(Connection conn = DriverManager.getConnection ("jdbc:oracle:this..
String과 StringBuilder, StringBuffer는 모두 문자열을 저장 및 관리하는 클래스이다. 아래와 같은 방식으로 생성 가능하다. String str1 = new String("abc"); String str2 = "abc"; StringBuilder str3 = new StringBuilder("abc"); StringBuffer str4 = new StringBuffer("abc"); 참고로, StringBuilder와 StringBuffer의 생성자의 파라미터로 CharSequence 인터페이스를 구현한 모든 클래스를 사용할 수 있다. CharSequence를 구현한 클래스로는 CharBuffer, String, StringBuffer, StringBuilder가 있다. Strin..
컴파일할 때는 문제가 없던 프로그램도 동작 도중에 종종 오류가 발생한다. 사용자가 항상 개발자의 생각대로 프로그램을 사용하지 않기 때문이다. 숫자만 입력해야하지만 문자열을 입력하기도 하고, 파일을 업로드하기 전 파일의 이름을 지정하지 않기도 한다. 이럴 때 발생하는 오류를 사전에 방지하는 것은 중요하다. 그런데 개발자가 이러한 오류가 발생할 때마다 프로그램이 종료되는 것을 원치 않을 수 있다. 오류를 무시하고 싶을 수도 있고, 그 오류가 발생 했을 때 수행할 적절한 동작을 직접 정의하고 싶을 수도 있다. 이럴 때 활용하는 것이 try-catch-finally 구문이다. public class Main { public static void main(String[] args) { int [] arr = ne..
시리즈 바로가기 링크아마존 웹 서비스(AWS) EC2 생성과 기본환경 구축 - 1. 인스턴스 생성아마존 웹 서비스(AWS) EC2 생성과 기본환경 구축 - 2. IP할당 및 접속 지난 포스팅에 이어, 아마존 웹 서비스(AWS) EC2 인스턴스 생성과 기본환경 구축을 계속하도록 하겠다. 지난 번에 접속까지 성공했으니, 이번에는 설치 위주로 진행될 것이다. 이번 포스팅에서 설치할 유틸들은 - JAVA 1.8- Mysql- nginx- Tomcat8 등이다. 본인이 원하는 것이 더 있다면, 이 포스팅의 내용과 상관없이 진행해도 무관하다. 1. Root Password 설정 우리는 ec2-user라는 계정으로 접속한 상태이다. root계정의 비밀번호를 설정해보자. 아래와 같이 명령어를 입력하고 진행하면 된다. ..
이런 간단한 문제로 며칠을 헤맸다는 사실이 매우 창피하지만, 같은 실수를 반복하지 않기 위해 삽질로그를 남긴다. Spring boot & thymeleaf로 다중 파일업로드를 처리하려면, 몇가지 간단한 절차만 수행하면된다. 1. .properties 설정 2. html 개발 3. java 개발 1. .properties 설정 설정을 하지 않아도 상관 없지만, application.properties 파일을 열어 아래와 같이 추가해주면 좋다. multipart.maxFileSize=5MB multipart.maxRequestSize=5MB 최대 허용 파일 크기를 5MB로 넉넉하게 잡은 것이다. Default값은 1MB이다. 2. html 개발 (화면 개발) 태그를 이용하여 개발하면 된다. 다중 파일업로드를..
C++와 JAVA을 비교하는 것은 대학에서 프로그래밍 언어를 배울 때, 얼핏 배우고 지나갔던 내용이었다. 비슷한 성격(객체지향)을 띄는 언어이지만, 차이점도 극명한 언어이기도하다. 나름의 기준으로 3가지 기준으로 차이점들을 정리해봤다. 아, 그리고 여기에 작성되는 것들이 JAVA와 C++ 차이점의 전부는 아니라는 점 꼭 알아뒀으면 좋겠다. 그리고 나름대로 중요한 것만 뽑았지만... 아닐 수도 있다.. 1. 상속 대학 수업에서 교수가 학생에게 C++과 JAVA의 차이점을 묻는다면, 높은 확률로 학생은 상속에 관련된 차이점을 대답할 것이다. 그정도로 상속에 있어 두 언어의 차이점은 극명한데, JAVA가 C++보다 단순한 상속 체계를 지원한다. 첫째로, C++은 다중 상속을 지원하고 JAVA는 그렇지 않다. ..
Java의 Collection Framework는 프로그램의 개발에 있어, 유용하게 쓰일 자료구조를 정의해놓은 것이다. 이를 통해 모든 객체타입을 구성요소로 하여 데이터 저장 방식을 손쉽게 활용할 수 있다. 단, Primitive Type(기본형)의 경우, 구성요소가 될 수 없음에 유의하자.※ 참고: [IT 기술면접 준비자료] JAVA의 Wrapper Class와 AutoBoxing 1. 컬렉션 프레임워크의 인터페이스 구조 왠 인터페이스!? 라고 생각하는 사람도 있겠다. 사실 컬렉션 프레임워크의 구성요소들은 '미리 정의된 클래스'이다. 그리고 이들을 계층화 (묶어주는)해주는 인터페이스가 존재한다. ▶ 컬렉션 프레임워크의 인터페이스 구조 위 그림은 컬렉션 프레임워크의 인터페이스만 나타낸 그림이다. 즉, 모..
JAVA의 Wrapper Class에 대한 개념은 그냥 지나가기 쉬운 부분이라 꼭 정리를 해둘 필요가 있다. 특히, JDK 1.5 이후 버전부터 AutoBoxing기능이 지원되면서, 더욱 그냥 지나가기 쉬워졌다. 그리 어려운 내용이 아니니 쭉 훑어보면 될 것이다. JAVA는 객체로 이루어져있고, 모든 데이터가 객체로 표현된다. Object를 상속하는 모든 클래스를 참조형(Reference Type)이라고 한다. 하지만 이처럼 객체로 표현하지 않고 원시적인 형태로 표현하는 예외를 두고 있는데, 그것이 바로 기본형(Primitive Type)이다. JAVA의 기본형과 이에 대응하는 Wrapper Class. (출처: 자체제작) 표의 좌측에 나열된 기본형의 예를 보면 기본형의 정의에 대해 더 명확해졌을 것이다..
JAVA라는 언어를 공부한 적이 있다면, JVM(Java Virtual Machine)에 대해 들어본 적 있을 것이다. 이번 포스팅에서는 평소에 간단하게 공부하고 지나치기 쉬운 JVM에 대해 알아보려고 한다. 그림1. 일반적인 윈도우 프로그램의 실행구조와 JAVA 프로그램의 실행구조 (출처: 자체제작) JAVA라는 언어를 공부하기 위해 어떤 교재를 구매했든, 대체로 맨 앞 챕터에서 볼 수 있는 그림이다. 두 그림의 차이점은 Program과 Operating System(운영체제) 사이에 JVM이라는 것이 존재한다는 점이다. 그림으로 봤을 때는 윈도우 프로그램과 JAVA프로그램의 차이는 오로지 JVM이다. 이러한 JVM이 어떤 기능을 하는지 간략하게 기술하자면... 1. JAVA가 OS에 상관 없이 동작할..