Programming 95

JDBC에서 insert 쿼리 날리기, SQL 쿼리문법 불일치 오류해결(';' 세미콜론 지우기). 2022-02-09.

오늘은 JDBC에서 DB에서 데이터를 "조회" 하는 것이 아닌 "추가" 하는 과정을 해 보았다. 즉, SQL의 DML에는 SELECT, INSERT, UPDATE, DELETE 등이 있는데, 이번에는 insert문을 직접 JAVA에서 JDBC를 이용해 DB로 쿼리를 날리는 작업을 해 보았다. 차이점이 있는데, SELECT 만 쓸 때는, 결과집합(RESULTSET)객체를 만들어주고, 거기서 출력을 해야했었는데, 애초에 조회가 아니라 추가다보니 그럴 일이 없어졌다.(아래의 주석 처리한 부분.) 또 PreparedStatement를 통해 복잡한 인자들을 직접 추가하지말고, 이미 만들어진 SQL에 인덱스별로 추가해주면 된다. 우선 아래의 내가 쓴 코드를 보자. 전혀 문제될 것이 없어보인다. public clas..

Programming/JDBC 2022.02.09

JDBC와 DB간의 커밋(commit). 관계, 열 시퀀스. 2022-02-08

그전에는 커밋을 단지 SQL DEVELOPER의 접속 세션에만 영향을 주는줄 알았는데, 실제 JDBC로 DB에 불러올때도 똑같은 원리가 적용되는줄 이제 알았다. 이전 나의 포스팅을 참고바람. 커밋과 롤백, DATE 형 칼럼에 값 insert 하기. 2021-07-23 — "꾸준하게, 지속하자" (tistory.com) session2에서 notice 테이블에 새로운 테이블을 추가 했음에도, session1에 반영이 안된 모습. (해당 테이블이 ROCK걸린 상태). session2에서 커밋을 완료하고, session1에서 바로 반영된 모습. 그런데 위에 보면 hit가 10 이상인 레코드만 뽑아내는 기능은 session1 ,2 둘다 같은데 코드의 방식이 서로 다르다. session1 은 java 로 if(1..

Programming/JDBC 2022.02.08

ORACLE에 저장된 DB테이블을 JDBC를 이용해 이클립스에서 결과집합 출력하기.(resultset 이용) 2022-02-07

우선적으로 JDBC의 기본적인 쿼리는 연결/인증 - 문장실행 - 결과집합. 등으로 구성된다. 그 이유는 JDBC는 필요한 이유가 기본적으로 여러가지의 DB에 연결 호환성을 주기 위한 템플릿이기 떄문이다. 연결/인증 -문장실행 -결과집합은, 어느 DB에 연결하더라도 해당 DB를 사용하기 위해서 필수적으로 사용해야하는 과정이기에 JDBC는 각 DB에 맞춤형 함수들을 개발해서 JDBC 드라이버에 만들어놓았고, 우리는 그 JDBC DRIVER을 JDBC를 통해 이용하기만 하면 된다. Class.forname("oracle.jdbc.driver.OracleDriver"); //각 DB에 맞는 Driver를 호출해 준다. *특이사항 클래스를 생성할때, new연산자 안씀. Connection con= JdbcDriv..

Programming/JAVA 2022.02.07

이클립스,인텔리제이 같은 IDE 들은 는 단지 프로젝트를 편집하는 기능의 툴 일 뿐이다. 인텔리제이, 이클립스의 기본저장경로. 2021-12-21

이전에도 포스팅 한번 했지만, 이클립스에서 만든 프로젝트는 저장소가 이클립스 내부 저장소가 아닌 프로젝트를 처음 생성할때, 내가 지정해준 내 PC속 공간이다. 이곳에 내가 지정한 장소고 이 장소에 "프로젝트 파일" 만 저장된다. 만약 다른 IDE에서 이 프로젝트를 편집하고 싶다면, 위 경로의 "프로젝트 파일" 을 그대로 불러오면 된다. 프로젝트 파일들은 IDE에 종속되어있지 않다. 언제 어디서든 다른 IDE에 의해 편집될수 있는 독립적인 파일이다. 처음만들때 위치만 지정받을 뿐이다. 만약 내가 다른 IDE에서 작업한 프로젝트를 이클립스에서 다시 작업하고 싶다면 아래 Open Project 탭을 통해 프로젝트가 있는 폴더를 직접 선택해서 이클립스 IDE에서 직접 작업을 이어서 수행할 수 있다. 참고로 이클..

Programming/IDE 2021.12.21

AOP 프로그래밍, 프록시에 대하여. 2021-12-16

우선적으로 AOP 란 Aspect Oriented Programing 의 약자이다. Aspect 란 측면이라는 뜻으로, 좁은 부분을 뜻한다. 즉, 측면 지향 프로그래밍 이란 것은, 프로그램상의 어느 한정적인 부분들을 나누어서 프로그래밍하는 것을 의미한다. 이 한정적인 부분을 공통부분이라 칭하고 핵심부분과 구분되어 별도시스템이 동작 가능하게 한다. 아래의 코드를 보자. public class RecCalculator implements Calculator{ @Override public long factorial(long num) { // TODO Auto-generated method stub if(num==1) { return 1; } return num*factorial(num-1); } } 위 코드..

자바의 정석 공부한것 요약3(Optional, Comparator을 익명클래스, 람다식으로 구현법, 인텔리제이로 커맨드라인cmd 사용법). 공부기간 : 2021-01-28 ~2021-05-17

2021-01-28 Optional 와 OptionalInt , Stream 와 IntStream. , 우선, 그냥 Stream 보다 기본형 Stream 사용시, int sum(), OptionalDouble average() OptionalInt max() OptionalInt min() 등, 숫자를 다루는데 편리한 메서드 들을 제공한다. 또한, 오토박싱& 언박싱으로 인한 비효율을 줄인다. max(),min() 메소드는 일반 Stream에도 정의되어 있는데, 매개변수로, Comparator을 넣어야 한다. pg.841. 이 기본형 스트림 들은, 반환 값으로, 일반 Optional이 아닌, OptionalInt를 사용한다. 2021-02-07 정렬의 기준인, Comparator 구현 하는 3가지 방법( ..

Programming/JAVA 2021.12.14

자바의 정석 공부내용 요약본2. 공부 기간: 2021-01-15~2021-01-28

2021-01-15 람다식을 받을 수 있는 래퍼런스 타입은 무엇인가? 람다식은 익명 객체이다. 즉, 익명 클래스가 선언과 동시에 생성한, 객체이다. 그러나 이 생성된 객체를 받아줄 마땅한 타입의 참조 변수가 존재 하지 않는다.->이유: Object(상위 조상의 래퍼런스)로 받는다면 Object 리모콘에는 내가 람다식으로 만들어낸 메서드가 존재 하지 않기 때문에, 컴파일 에러난다.(업케스팅때의 오류와 비슷,) 따라서 함수형 인터페이스라는 것을 통해, 람다식으로 만들어진 익명객체를 전달 받을 수 있는, 참조변수 타입을 자바에서 새로 만들었다. 다른 관점으로 설명 하자면, 애초에 익명 클래스를 생성 할 때, new 키워드 뒤에 붙이는 타입은 조상클래스의 이름 또는, 구현하고자 하는 인터페이스의 이름을 사용해서..

Programming/JAVA 2021.12.14

자바의 정석 공부내용 요약(인터페이스, 내부클래스, 예외 던지기). 2020-12-31 ~2021-1-15

2020-12-31 오늘의 공부 정리 인터페이스의 장점.-빠른 개발 시간, 서로 관계없는 클래스들끼리의 연결 가능. 표준화가 가능(JDBC을 활용하여 각 sql에 맞게 자바 프로그램을 개발 할 필요 없이 JDBC에 정의된 추상 메소드 들을 적절히 오버라이딩 해서, 사용하면, sql의 종류를 바꾼다 해도, 자바 코드를 그에 맞게 갈아엎을 필요 없음->인터페이스를 통한 표준화) 독립적인 프로그래밍 가능-> 각 클래스들 간의 의존성을 약화시켜서 한 클래스가 변경되어도, 다른 클래스의 코드나 매개변수 등을 변경하지 않아도 됨. 마치 우리가 윈도우 UI가 그대로면, 컴퓨터 내용물이 바뀌어도 전과 똑같이 컴퓨터를 사용할 수 있는 것과 같음. 2021-01-08 오늘의 공부 정리. 내부 클래스는 3가지 유형이 있음...

Programming/JAVA 2021.12.14

스프링 웹 개발 입문강의. 요약.

테스트코드의 given when then 구성 given: 뭔가가 주어졌을 때, when: 이것을 실행했을 때, then: 결과가 이것이 나와야 함. 주석으로 이런 방식으로 테스트 코드 흐름을 구성하면, 가독성이 증가됨. 2021-02-16 스프링 빈 추가하기 첫 번째 방법(컴포넌트 스캔과 자동 의존관계 등록.) @Controller, @Component, @Service, 애너테이션 등으로 스프링 메인 메소드가 실행되었을 때, 스프링 컨테이너에 자체적으로 컴포넌트 스캔을 통해 스프링이 스프링 컨테이너의 구성요소(빈)으로 추가해주는 것이다. 여기서 컴포넌트 스캔의 범위는 메인 메서드가 있는 상위 패키지에 구현된 모든 패키지들을 뒤져서 다 스프링의 빈으로 추가해 주는 것이다. 여기서 파란색 펜 부분이, 컴..

인텔리제이 테스트 코드 작성 Tip.

Test 코드 작성 시 assert j assertJ의 static 메서드인, assertThat()을 사용하여, 에러메세지와, 테스트 코드의 가독성을 높여준다. assertThat(Actual).isEqualsTo(Expect); Actual:실제값, Expect: 기댓값. Intelli static import 빠르게 하는 법 art+enter 쳐서 옵션 선택하면, 자동으로 import 됨. assertThat 메서드 쓸 때, 사용. Test코드의 @AfterEach 애너테이션의 필요성 @AfterEach : 한번에 여러 테스트를 실행하면 메모리 DB에 직전 테스트의 결과가 남을 수 있다. 이렇게 되면 다음 이전 테스트 때문에 다음 테스트가 실패할 가능성이 있다. @AfterEach 를 사용하면 각 ..