Programming 95

메이븐프로젝트의 식별자: 아티팩트ID 2021-10-13.

나는 의문점이 들었다. 만약 똑같은 POM.xml 파일로 컴파일된 메이븐 프로젝트는 루트폴더의 이름만 바꾼뒤, 이클립스에 import가 될까? 이런 삽질? 을 한 이유는 메이븐 프로젝트를 구별할수있는 지표가 무엇인지 궁금했던거 같다. 그래서 난 chap03 의 POM.xml을 똑같이 사용해서 다시 만든 메이븐 프로젝트로 루트폴더이름만 다르게 해서 이클립스에 import 했을때는 이미 존재하는 아티팩트 ID 이기에 이클립스에 임포트 할수 없다고 나왔다. 그래서 난 어? 그럼 아티팩트 ID만 바꾼다면 다시 삽입되지 않을까? 라는 생각과, 그렇다면 아티펙트 ID가 메이븐 프로젝트를 개별적으로 구별해주는 지표인가? 라는 궁금증이 들었다. 메이븐 설정파일인 POM.xml에서 4.0.0 sp5 sp5-chap03 ..

윈도우 콘솔창에서 메이븐 프로젝트 컴파일하기. 2021-10-12

우선 지난포스팅에 말했듯이, 메이븐 프로젝트를 컴파일 하기 위해서는 윈도우 콘솔창의 지정한 위치에 메이븐의 기본폴더 구조와 POM.XML파일을 갖추고 있어야 한다. 처음엔 콘솔창에 해당 프로젝트 루트폴더가 있는 곳에서 mvn compile 이란 명령어를 실행했지만, 'mvn은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라는 오류 메세지가 나왔다. 그래서 책 찾아보니, 메이븐 사이트에서 다운받은 메이븐 이 내 컴퓨터의 PATH 환경변수의 경로가 올바르지 않을 경우 이런 에러 메세지가 나온다고 했다. 그래서 확인해보니 [메이븐 설치폴더]\bin 경로가 아예 존재하지 않아서 추가해주었다. 그런다음 다시 콘솔창에서 프로젝트 루트폴더에서 mvn compile을 하니 정상적..

복습 chap 02. , 이클립스에 메이븐 프로젝트 import. , 이클립스와 자바 프로젝트와의 관계, 인텔리제이와 이클립스의 관계.

메이븐의 기본 폴더 구조. spring5 -spring5-chap2(메이븐 루트폴더) -src -main -java(실질적인 자바 코드가 들어가는곳) -resources(자바코드외 프로퍼티 파일이나 XML 파일이 들어가는곳.) Pom.xml( 모든 메이븐 프로젝트에는 루트폴더에 프로젝트의 설정을 정의한 POM.xml 파일이 들어가있음.) 객체의존 이란 한 클래스가 다른 클래스의 메서드를 실행할때, 서로 의존관계에 있다고 말한다. 객체의존이 사용되었을경우, 의존대상이 되는 객체의 변경이 일어났을때, 필연적으로 의존하는 객체의 코드 변화가 있을수 밖에 없는데, 이를 최소화 하기 위한 방법으로는 DI 라는 방법을 쓴다. 객체의존을 구현하는 방법은 크게 두가지가 있는데, 1. 직접 생성자를 통해 의존대상이되는 ..

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