오라클이란 ?
DBMS제품들 중에 하나
DBMS는 ?
DB를 관리하는 시스템
DB?
데이터를 모아놓은 데이터 집합
DB를 직접 사용 할 수있나요 ?
no
DB를 MS를 이용해서 간접적으로 사용할때 어떤 방법으로 사용하나요 ?
명령어SQL를 이용
SQL의 구성3가지 ?
1. 데이터정의 DDL : create / alter/drop
2. 데이터조작 DML : select / insert/update/ delete
3. 데이터제어 DCL : grant/ revoke(허가)
DDL을 위해서 알아야할 내용으로 자료형 :
문자열(char/varchar2/nchar/nvarchar/long/clob/nclob
숫자:number
날짜:timestemp/ date
null은 값이다. 비어있는게 아니라서 비교가가능하다.
데이터수정
UPDATE [테이블명] SET [변경할 내용] WHERE [조건];
COMMIT; 하기. 커밋/롤백을 안하면 해당레코드가 홀딩되어있어서 다른사람이 접근불가.
UPDATE MEMBER SET PWD ='222' WHERE NICNAME ='TUE';
COMMIT;--INSERT후 저장소에 저장
--DELETE MEMBER;모든데이터삭제
DELETE MEMBER WHERE ID='21';--특정 레코드만설정
INSERT INTO MEMBER(ID, NICNAME, PWD)--데이터삽입
VALUES(21,'TUE' ,'111');
--ROLLBACK;--커밋안했던것취소
SELECT * FROM MEMBER ORDER BY ID;--ID로 정렬하기
SELECT * FROM MEMBER;--MEMBER에서 모든컬럼을가져와
SELECT MEMBER.* FROM MEMBER;
SELECT ID, NAME, PWD FROM MEMBER; --원하는컬럼만 원하는 순서대로 조회,테이블이 여러개면 어떤테이블인지정.테이블이하나면 생략가능
SELECT ID AS MEMBER_ID, NAME, PWD AS PASSWORD FROM MEMBER;--원하는 컬럼을 원하는 별칭으로조회
SELECT ID MEMBER_ID, NAME, PWD PASSWORD FROM MEMBER;--AS생략가능
SELECT ID "USER ID", NAME, PWD PASSWORD FROM MEMBER;--AS생략가능, 빈공간""로 묶기
--UPDATE MEMBER SET PWD='111';--모든사용자의 비밀번호를 바꾸는것, 필히 WHERE조건절넣을것,누구도 레코드에 손댈수없다,커밋이나 롤백할때까지
JDBC 데이터베이스를 사용하기위해 api필요
- 오라클과 MS sqld의 api 함수이름이 다르다.
- 데이터베이스의 연결을 위한 함수를 바꿔야한다. (벤더가달라서,,)
- 기능을 단일화시킬수있는 돼지코를 ㅈ바ㅏ에서 제공
- sql을 사용해서 db에 넣어야함.
- 사용자입력 -> SQL(빈칸에들어감) -> DB
JDBC Driver
구동장치는 jdbc드라이버임.
jdbc는 껍데기
콘솔용어플리케이션임 , 자바프로그램만드는중 , 웹이아니다. (자바프로젝트에서도가능한것..)
스프링이 사용하는 버전이 1.8
new라는 키워드가 객체생성하는 유일한방법이아니었다.
연결됐으면 연결된객체통해서 객체를반환해준다.
ctrl shift o ->import
다른 패키지에 있는 클래스를 사용하기 위해서는 import 키워드를 이용한다.
DriverManager : 드라이버로드 Connection // 드라이버매니저를 통해서 Connection 만듦, import Statement st = con.createStatement(); // 안쪽에서 new해서 만들어진 객체 반환 Resultset rs = st.executeQuery(sql); // st를 실행하면 실행한것을 통해서 결과집합객체만듦 |
Class.forName("oracle.jdbc.OracleDriver");
- 문자열로 읽어온것을 객체화해야함(자바코드가 아니기때문)
- 자바플랫폼에서지원 -> Class cls = Class.forName("문자열")
- Class.forName() : 문자열을 가지고 문자열에 해당되는 클래스정보를 얻어서 클래스안에있는 모든것을 분석해낼 수 있는도구
- 소스코드는 하나의 문자열이다
- 소스코드의 규칙이있다. 자바의규칙, 자바스크립트의 규칙 등
- 코드들이 내부는 숫자로되어있다.
- RTTI (Runtime type information) : 런타임 타입의 정보를 알아낼 수 있다.
- 코드에서 객체나 메소드,필드등 포함해서 읽어볼 수있다.
- getMethod() 메소드배열을 가져오는 구조체,
메소드나 속성 메소드인자들을 꺼내볼 수있다.
문자열을 읽어온것을 가지고 타입정보를 알아 낼수도있고,
newInstance();로 객체를 만들 수도있다.
Class cls = Class.forName("com.newlecture.web.Lotto"); Lotto lotto = (Lotto)cls.getDeclaredConstructor().newInstance(); |
문자열로 읽어온것을 객체화하고싶다면 ? (톰캣처럼)
new연산자쓸 수 없다. Class.forName("")사용
드라이버를 생성하는 코드
실제로 new하는건아닌데, 드라이버매니저가 오라클드라비어객체를 반환해주지 ?
DriverManager.getConnection(null)
OracleDriver 클래스안에 생성자는 static생성자이다. static이기때문에 "oracle.jdbc.OracleDriver"인식이 되는 순간 저절로 호출된다.
생성자 안에 이미 자식객체를 생성하며 부모객체를 참조하고,
Lotto lotto = new Lotto()생성시 4바이트만 할당(인스턴스변수 1개)
모든객체가 동일한값을 쓰면 객체생성할때마다 인스턴스변수를 만들필요가없다.
모든객체가 static 하나가지고쓴다.
- static은 객체와상관없이 불러올수있다.
- 100개의 객체가 만들어져도 1개의 전역변수사용
- 메모리절약가능
- 프로그램이 실행되자마자 실행됨
- new와상관없이 생성
- 객체생성자:객체만들때만생성
- static{ } 생성자, 클래스에 접근만하면 실행되는것,한번만 실행
- static 변수는 계속접근가능
클래스의 속성과 메서드에 static 키워드를 사용하면 어디서나 속성과 메서드를 공유할 수 있다.
'2021 Newlecture > Servlet & JSP' 카테고리의 다른 글
엔티티만들기 / 성능향상을 위한 연결종료/ (0) | 2021.04.27 |
---|---|
set / map/ list (0) | 2021.04.26 |
기존코드분리/사용자가 입력한 값 넣기/라이브러리를연결 (0) | 2021.04.23 |
JDBC/엔티티클래스 (0) | 2021.04.22 |
컬럼추가(ADD) / 행추가 INSERT INTO / ROLLBACK / COMMIT (0) | 2021.04.20 |
SQL / 테이블생성하기 / CHARACTER형식 (0) | 2021.04.19 |
코드블럭 <%%> <%! %> <%= %> <%@ %> (0) | 2021.04.16 |
Server Path / 코드블럭 / 4대 저장소 (0) | 2021.04.15 |