반응형
목록
Spring (68)
[꼼꼼한 개발자] 꼼코더
🍃 스프링과 연동 처리 SqlSessionFactory를 이용해서 코드를 작성해도 직접 Connection 얻고 JDBC 코딩이 가능은 하다. 하지만 우리는 좀 더 편하게 작업하기 위해 SQL 처리 설정을 분리하고 자동으로 처리 되는 방식을 이용해야 한다. 이를 위해 Mybatis의 Mapper라는 존재를 작성해야 한다. Mapper는 쉽게 말해 SQL과 그에 대한 처리를 지정하는 역할이다. Mybatis-Spring을 이용하면 Mapper를 XML과 인터페이스 + 어노테이션 형태로 작성할 수 있다. 🔌 Mapper 인터페이스 Mapper를 작성하는 작업은 XML도 이용할 수 있지만 이번 예제에서는 최소한의 코드를 작성하는 Mapper 인터페이스를 사용하겠다. 👨🏻💻 TimeMapper 예제 추가 ma..
🍃 MyBatis와 스프링 연동 스프링과 MyBatis를 연동하여 더 빠르게 SQL을 처리할 수 있게 만들어 보자. MyBatis는 흔히 ‘SQL 매핑(mapping) 프레임워크’로 분류된다. JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 사용된다. 💽 JDBC 직접 Connection 맺고 마지막에 close() PreparedStatement 직접 생성 및 처리 PreparedStatement의 setXXX() 등에 대한 모든 작업 개발자가 직접 처리 SELECT의 경우 직접 ResultSet 처리 🐧 MyBatis 자동으로 Connection부터 close()까지 내부적으로 PreparedStatement 처리 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리 MyBa..
🏘 커넥션 풀 설정 여러 명의 사용자를 동시에 처리하는 웹 애플리케이션은 데이터베이스 연결을 ‘커넥션 풀(Connection Pool)’을 이용한다. 커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 놓고 이를 pool로 관리하는 것이다. 즉, 필요할 때마다 커넥션 풀의 커넥션을 이용하고 반환하는 기법이다. 이처럼 미리 만들어 놓은 커넥션을 이용하면 Connection에 필요한 비용을 줄일 수 있다. 따라서 DB에 빠르게 접속할 수 있다. 따라서 아예 스프링에 커넥션 풀을 등록해서 사용하는 것이 좋다. Java는 DataSource라는 인터페이스를 통해서 커넥션 풀을 사용한다. DataSource를 통해 매번 데이터베이스와 연결하는 방식이 아닌 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향..
💬 서론 책의 예제에서는 Oracle을 사용하였지만 02번 게시물을 보면 알듯이 나는 M1 맥북이다. M1 실리콘 맥북에서는 Docker를 이용한 오라클 사용이 어렵다. 따라서 오라클 클라우드 서비스를 통하여 오라클 데이터 베이스 사용이 가능한데 그러려면 오라클 클라우드 가입이 필요하다. 여기서 문제다.. 3일째 가입 시도 중인데 가입이 불가하다.. 라이브 채팅, 메일 문의, 브라우저 변경 후 가입시도 등 여러 가지를 시도해 보았지만 아마 해결은 어려워 보인다. 결론은 교재는 Orcle 이지만 나는 Mysql을 사용하도록 하겠다.(험난한 과정이 예상 되지만 이겨내야 한다..) 🖇 프로젝트의 JDBC를 연결 예제를 구성하기 위해서는 JDBC 연결에 문제가 없는지 확인해야 한다. 우선 JDBC Driver가..
👀 콘솔에서 빌드하는 경우는? 로컬에서 개발한 프로그램을 실행시킬 때는 IDE(인텔리제이, 이클립스)의 실행버튼 혹은 단축키로 실행시킬 수 있지만 서버에 배포한 경우에는 IDE에서처럼 실행시킬 수 없다. 그럴 경우 콘솔에서 jar파일을 간단한 명령어로 실행시킬 수 있으니 한번 콘솔로 진행해보도록 한다.💪🏻 🔨 콘솔에서 빌드부터 실행까지 1. 터미널을 열고 study에 hello-spring을 들어간다. 명령어 : cd study → cd hello-spring 2. ./gradlew build를 입력한다. 입력시 알아서 필요한 라이브러리르 다운로드 받기도하고 알아서 빌드가 된다 3. 빌드 후 bulid/libs에 들어가서 목록을 확인하면 자바 파일을 실행하는 18M크기의 java -jar 파일이 만들어져..
🖌 추상화 실습 쥐 클래스를 추상화하여 클래스와 인스턴스를 만들어보자 아래 그림은 main() 메서드 실행 직전의 T메모리 스냅샷이다 주목할 점은 Mouse의 속성들의 변수 저장 공간이 없다. 이유는 3개 속성 모두 Mouse 클래스에 속하지 않고 Mouse 객체에 속하기 때문. 즉 객체가 생성되야만 힙 형역에 할당되어 변수 공간이 생성된다. Mouse micky = new Mouse();라는 코드가 실행된다. 이때micky라는 참조변수가 가리키는 번지수는 100번이라고 가정한다. 그럼 아래와 같은 T 메모리 구조가 나타난다. 📌 static 예제 위에 설계도를 보면 꼬리(countOfTail)라는 속성이 보인다. 근데 ‘미키마우스’, ‘제리’, ‘찍찍이’ 모두 꼬리는 1개이다. 우리는 여기서 한 공간에..
👀 클래스 vs 객체 = 붕어빵틀 vs 붕어빵 은 잘못된 예시?? 아마 많은 사람들이 들었던 클래스와 객체의 관계의 예시일 것이다. 하지만 붕어빵틀 ↔️ 붕어빵 예시는 ‘클래스와 객체의 관계’의 예시가 ‘아니다’ 아래 코드를 보자. (쉽게 한글로 자바 코드를 흉내 내어 설명해 보겠다.) 뭔가 이상함을 눈치 챘을것이다. 그래도 어렵다면 좀 더 풀어서 설명해 보겠다. 붕어빵 틀을 생산하는 금형 기계가 있고 붕어빵 틀이 붕어빵을 찍어내서 ‘클래스’라고 한다. 그렇다면 같은 논리로 금형기계는 붕어빵틀을 찍어내는 클래스가 된다. 위에 말을 인간적인 말로 번역한다면 > “새로운 금형기계를 하나 만들었더니 붕어빵틀이 되었다..??” 이해가 어려운 예제이다. 금형기계와 붕어빵틀이 클래스와 객체 관계가 아니듯 붕어빵 틀..
👦🏻 객체 지향은 인간 지향이다 프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정이다. 기계중심의 기계어에서 조금 더 인간을 편하게 하는 어셈블리어 C, C++, 자바로 발전해 온 과정 모두 로우 레벨의 기계가 아닌 하이 레벨의 인간을 배려하기 위한 과정이었던 것이다. 그렇지만 절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다. 특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘들다. 그때 “우리가 왜 기계 종속적인 개발을 해야 하지?”라는 생각과 동시에 “우리가 눈으로 보고, 느끼고, 생활하는 현실 세계처럼 프로그래밍을 해보자!”라는 고민 끝에 객체 지향 개념이 탄생했다. 기존의 구조적 프로그래밍 언어에서 가..