전체 글 170

"객체지향의 사실과 오해" 라는 책을 읽고. 2021-10-06

지난 포스팅에서 썼듯이 왼쪽 상완골 골절로 인해서 한달 정도를 프로그래밍을 못했다. 그 대신 "객체지향의 사실과 오해" 라는 책을 9월 2일부터 10월 1일까지 한달간 완독하고 나서 내가 배운것들과 알게된것들, 소감을 적어보려 한다. 우선 난 자바의 정석공부할때까지만 해도 왜 객체객체 하는걸까? 객체는 그저 클래스가 붕어빵 기계로 찍어낸 붕어빵에 지나지 않을까? 정도의 인식이 있었다. 물론 세부적인 문법사항들은 다 외우고 어느정도 자바라는 언어의 체계가 머릿속에는 자리잡고 있는 상태였다. 그냥, 단순히 자바라는 언어에 대한 생각만 있고, 그것이 객체지향 패러다임과 어떤 관련이 있을까란 생각이 별로 없었던거 같다. 책에는 일관적으로 강조하는 내용이 있었다. 바로 객체는 자율적으로 주어진 책임을 수행하고, ..

개발 책 리뷰 2021.10.06

왼쪽 어깨 골절로 인한 휴식.시작 2021-09-02

저번 8월 13일날 다친 왼쪽어깨가 낫지 않아서 오늘 오전 반차내고 CT 찍으러 가 보았다. 그런데,, 의사선생님의 말대로 왼쪽 어깨가 골절되있었다. 난 그런줄도 모르고 계속 움직였으니... 참 처음부터 CT바로 찍어볼껄 그랬다. 그래서 오늘 공부는 쉬었다. 팔이 다 나을떄까지는 6주정도 걸린다는데, 그때까지는 직접 프로그래밍 하기 보다는 책으로 읽는 공부위주로 해야겠다. 지금 고려하고 있는 책은 저번에 사놓고 조금밖에 못읽었던, "객체지향의 사실과 오해" 라는 프로그래밍 책과 "사랑 수업" 이라는 교양책, "스프링 5 프로그래밍 입문" 내가 잠깐 SQL 공부하러 갔던 8장 전까지 복습, "이것이 MYSQL이다." 라는 책을 읽을 것이다.

MY HISTORY 2021.09.02

CRUD 서비스 만들기 3.(페이징쿼리 적용부터~). 2021-09-01

우선 지난시간에 내가 짠 쿼리대로, notice 테이블을 서버로부터 가져올때, 등록시간이 최신순으로(등록순 내림차순 한다음), 10개씩 가져오는 쿼리를 적용해 보겠다. NoticeService 클래스가 너무 길어서 SELECT 기능을 담당하는 getList() 부분만 가져왔다. public List getList(int page) throws ClassNotFoundException, SQLException{ String url="jdbc:oracle:thin:@localhost:1521/xepdb1"; String sql ="select * from(select ROWNUM as num, n.* from (select * from notice order by regdate disc) n ) " + "w..

Programming/JDBC 2021.09.01

CRUD 서비스 만들기 2(Select 문으로 레코드 리스트 형태로 가져오기). 2021-08-31

우선 이전 포스팅에서 완성하지 못했던, NoticeService 클래스와 서버에서 레코드를 저장하는 그릇역할을 할, Notice 클래스를 완성했다. NoticeService 클래스 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.ulsanboy.app.entity.Notice; //다른패키지에 만들어놓은 Notice 클래스를 참조. public class NoticeService { publ..

Programming/JDBC 2021.08.31

JDBC UPDATE ,DELETE 쿼리의 적용+ PreparedStatement 클래스.+ CRUD 서비스 만들기1. 2021-08-30

우선 지난 포스팅에는, INSERT 쿼리를 JDBC에서 실행하는 방법을 보였다. 이번엔 DBMS에 저장되있는 레코드를 변경하는 UPDATE 쿼리를 보이겠다. 우선 SQL로 현재 저장되있는 레코드를 수정하는 쿼리는 이렇다. update notice set title='남구 옥동', content='어깨가 빨리 나았으면 좋겠다.' where writer_id='모리'; 이 쿼리를 자바 프로그램에서 DB에 넣을려면, 아래와 같은 쿼리를 쓰면 된다. public class program { static String url="jdbc:oracle:thin:@localhost:1521/xepdb1"; public static void main(String[] args) throws ClassNotFoundExcep..

Programming/JDBC 2021.08.30

JDBC에서 레코드 가져오기, insert문으로 레코드 입력하기 + 트리거 개념+ 시퀀스 개념.+ statement 클래스의 DML에 따른 함수들. 2021-08-27

이젠 실질적으로 자바 프로그램으로 DB에 접근해서 데이터를 얻어와 보자. 1. 만약 내가 DB에 저장된 모든 데이터를 가지고 오고 싶다면 어떻게 해야 할까? 쉽다. rs.next의 특성을 이용하면 된다. rs.next는 서버의 결과집합을 가리키는 포인터가 EOF에 도달했을때, false를 반환한다. 이걸 이용해서 반복문을 돌리면 된다. public class program { static String url="jdbc:oracle:thin:@localhost:1521/xepdb1"; public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub Strin..

Programming/JDBC 2021.08.27

SQL developer에 사용자 계정 추가하기.+ 스키마 개념. 2021-08-26

우선 내가 궁금했던 점은, 분명 오라클 서버에 난 "NEWLEC"이라는 계정을 처음 SQL Developer를 설치할때 사용자 계정으로 만들어서 MEMBER, NOTICE등의 테이블등을 만들었다. 그럼, 만약 내가만든 테이블들을 다른 사람과 공유해서 쓰고 싶다면, 어떻게 해야할까? 처음 내가 생각한 가설은, 같은 접속 서버 PDB계정에 새로운 사용자를 하나 만든뒤에, 기본저장공간과, 임시저장공간을 각각, NEWLEC이 쓰는 테이블 스페이스랑 똑같이 맞춰주면 되지 않을까..?? 였다. 아래에보이는 두 항목을, 내가 공유해서 쓰고자하는 "NEWLEC"계정의 테이블 스페이스랑 동일하게 설정한다면, 같은 공간을 쓰는 것이니, 안의 데이터들도 서로공유되지 않을까?? 였다. 그런데 문제가 생겼다,,!! 사용자 이름..

Programming/SQL 2021.08.26

JDBC Driver설치. JDBC 기본코드와 동작원리.2021-08-25

모든 DBMS를 만드는 회사들은 각 DBMS의 연결 인등 문장실행 결과패치를 할수있게 해 주는 client를 제공한다. SQL DEVELOPER 처럼 말이다. 그런데 우리가 일반 사용자들에게 만들어서 제공하는 UI는 이런 기능을 제공해 주지 않는다. 또한 ORACLE, My SQL , MS SQL 등 다양한 DBMS 를 프로그램이 지원하는데 각각의 종류에 맞는 클라이언트를 그때마다 바꿔 쓸수도 없는 노릇이다. 즉, 기존에 SQL DEVELOPER 같은 DBMS 종속적인 클라이언트 들이 해줬던 연결/인증,문장실행, 결과패치 등을 우리가 대신 해 줘야 한다는 것이다. 또한 여러 DBMS에 범용적으로 적용시킬수 있는 기능도 필요하다. 이런 역할을 각 DBMS마다 최적화된 JDBC Driver가 해준다. JDB..

Programming/JDBC 2021.08.25

엔티티 제약조건,(primary key, unique). 시퀀스. 2021-08-24

오라클의 제약조건에는 총 도메인 제약조건, 엔티티 제약조건, 릴레이션 제약조건 등이 있다. 전에배웠던 not null, default, check 제약조건 등은 도메인 제약조건이고, 오늘 배울 primary key, unique는 엔티티 제약조건의 일종이다. 이 제약조건을 간단히 설명하자면 "레코드를 추가할때, 중복된 내용이 오지 못하도록 제약하는것" 이다. primary key, unique 모두 이 특성을 공통으로 가지고 있고 차이점이라면, primary key는 중복 제거가 주 목적이 아니라 "해당 레코드를 식별할수 있는 유일한 키"가 주 목적이기 때문에 null 값은 올 수 없다. 우선 새로운 개념의 적용을 위해 DDL 구문인 CREATE로 새 테이블을 만들었다. CREATE table "test..

Programming/SQL 2021.08.24