●2023.05.10
1교시
* 데이터베이스 종류
H2
MySQL / MariaDB
Oracle XE
* 습득기술 - 자바스프링, 데이터베이스 등을 이용하여 게시판 만들기
● 데이터베이스와 연동하기 위한 설치
* sts의 상단 탭 Help -> eclipse marketplace
1. enterprise검색 상단의 eclipse enterprise...3.29 설치 > 체크 되어있는 기본값으로 컨펌 > 라이선스 동의 후 finish
- sts 화면 하단에 설치율 뜸, 설치되면 pgh 박스 체크하고 확인 > 업데이트창 다시시작 누르기
2. dbeaver도 검색하여 23.0.4 설치(동일한 방법)
3. 확인
파일 > new > other... 에서 dbeaver가 확인되면 설치가 잘된 것
2교시
● MySQL 다운로드
1. 구글에 mariadb 검색
https://mariadb.org/
2. 링크접속하여 가운데 다운로드
- 버전 10.11.2 설치 - (다운로드시 알파 버전은 절대 다운하지 말 것)
3. 다운로드 폴더 들어가서 파일 누르고 next > 라이선스 체크
4. 저장경로 바꾸기 - 브라우저
- 로컬디스크로 가서 dev 아래 서버 폴더 만들고 C:\dev\server\MariaDB-10.11 입력 > ok > next
5. root(암호) 설정
-> remote 상자 체크 금지(인가 허용 안할거라-원격접속 막기)
-> UTF8 상자 체크
next > 디폴트 값 유지 > next > 설치
6. mysql 설치가 되었는지 확인하기
- 작업관리자(ctrl + alt + delete)에서 확인
* 작업관리자 설정 팁
컴퓨터가 느릴때
1. SysMain 끄기
2. Windows Search 끄기
● 자바 수업
* 유틸클래스 만들기(단축어 등 만들어 활용)
- 패키지명 : myIO
- 클래스명 : MyIO
MyIO {
static void p(String msg) {
System.out.print(msg);
}
static void pl(String msg) {
p(msg + "\n");
}
}
* 정적멤버 static - 273p
정적 '고정된'의 의미
정적 메소드는 정적 필드(구조체)에 종속되어 있다
3교시
* static 이해하기
1. Member MemberApp 만들기
- static은 회사명과 같은 공통의 변수에 적용
- 아이디, 비밀번호는 각각 가지고 있는 속성이라 인스턴스 변수
/* 데이터 클래스 */
package member;
//회원관리
public class Member {
int no;
String id;
String password;
static String companyName; // 회사 이름은 고정값, 공통의 것으로 하나만 있으면 되니까 static 변수
}
/* 실행 클래스 */
package member;
public class MemberApp {
public static void main(String[] args) {
Member memberObject = new Member(); // 생성자(객체 만들기)
memberObject.id = "hanul";
memberObject.password = "12345";
memberObject.companyName = "Java";
Member memberObject1 = new Member();
memberObject1.id = "bada";
memberObject1.password = "67890";
memberObject1.companyName = "Spring";
}
}
2. JavaClass601 만들기
* 1인 버전
학생모델링 3교시 - 1인ver
package javastudy;
// 601호의 학생을 모델링함
/* 우리 학생 - 데이터 클래스 */
class JavaClass601Student {
String studentName;
String studentAddress;
/* 이 클래스를 설명해주는 메소드 toString()을 재정의-오버라이딩 */
@Override // 어노테이션 - 재정의됨을 알림
public String toString() { // 외부에서 접근 허용 public
return "\n[학생이름 : " + studentName +
", 학생주소 : " + studentAddress + "]";
}
}
/* 601호 룸 - 실행 클래스 */
class JavaClass601 {
public static void main(String[] args) {
// 학생 1명 등교
JavaClass601Student jc601 = new JavaClass601Student();
jc601.studentName = "임연서";
jc601.studentAddress = "서울";
System.out.println("jc601 학생객체 " + jc601);
}
}
- 출력값
jc601 학생객체
[학생이름 : 임연서, 학생주소 : 서울]
* 배열 활용 버전
배열만들기
JavaClass601Student[] jc601 =
new JavaClass601Student[30];
- 학생 30명 등교 공간 확보
생성자 만들기
JavaClass601Student(
String studentName,
String studentAddress) {
this.studentName = studentName;
this.studentAddress = studentAddress;
System.out.printf("%s(이)가 지금 출석 했습니다.", this.studentName);
}
* 자바의 파일은 public이 있어야하고 클래스 이름과 일치해야함
4교시
* JavaClass601 데이터클래스 분리하기
클래스명 : JavaClass601Student
* 디버그
생성자 실행 순서
- 함수호출 > NEW 공간확보 > 매개변수 저장 > 생성자 호출
5교시
● 데이터베이스 관련 개념
*트랜잭션 : 데이터베이스의 상태를 변화시키는 하나의 논리적기능을 수행하기 위한 작업의 단위
또는 한번에 수행이 되어야 할 일련의 연산
->일정범위에서 실행된다.
- 정상적으로 처리되어 저장되는 것 : commit
- 처리가 되지 않고 원래로 돌리는 것 : rollback
* CRUD(create, read, update, delete)
-> 대응하는 Sql문 ( insert, select, update, delete)
CRUD 분석으로 테이블에 발생되는 트랜잭션의 주기별 발생 횟수를 파악하고 연관된 테이블들을 분선하면 테이블에 저장되는 데이터의 양 유추 가능
* REPL(read, evalute, play, loop)
DDL : Data Definition Language(데이터 정의어)
=> 데이터베이스에 데이터가 저장될 장소를 정의하는 명령어(공간확보)
DML : Data Manipulation Language(데이터 조작어)
=> 데이터베이스에 들어 있는 자료를 다루는 명령어 - 데이터의 실질적 처리
DCL : Data Control Language(데이터 제어어)
=> 데이터베이스의 자료변화시 일정단위(논리단위)로 결과를 묶어서(Batch저장, Batch취소, 특정위치까지만 취소) 관리하는 명령어
● 데이터베이스 연동
- 이클립스와 연결
- 스프링부트가 연결하는 역할
1. 상단의 Window > Perspective > Open Perspective > Others > DBearver 누르기
2. 데이터베이스 익스플로어부분에 배치
3. 콘센트 버튼 눌러서 H2 클릭
* JDBC (JAVA DATABASE CONNECTIVITY)
자바에서 데이터베이스를 다루는 표준 스펙
자바앱 <---> JDBC라이브러리 <---> 데이터베이스서버
4. 저장경로 설정하기
- Path > create 폴더 새로만들기 (database안에 h2 만들기)
-> C:\app\database\h2 > 파일이름 bbs > 저장
C:\app\database\h2\bbs 이 경로로 저장 됨
- 하단의 test connection 을 눌러 드라이버 다운로드 하면 알림창 뜨고 finish 누르면 익스플로어부분에 bbs 생성됨
6교시
* 데이터베이스 = 정보그룹 집합
정보 != 데이터
정보 : 일정형식의 양식을 가지고 분류됨, 의미있는 데이터(다른 사람에게 도움이 됨)
데이터 : 주변에 있는 모든 사물
● 테이블 만들기 - 방법 1
* 생성된 bbs에서 테이블(익스플로러)과 컬럼(하단) 만들기 > 저장하면 SQL명령이 나온 창이 뜸
1. 테이블 만들기
- 테이블 오른쪽 마우스 눌러 Create New 테이블 누르기
- 상단의 테이블이름과 테이블 설명 작성하기
2. 컬럼 만들기
- 화면 오른쪽 아래 Create New 칼럼(긴 표 모양) 눌러 원하는 칼럼이름, 길이, 데이터타입, 설정 하기
- VARCHAR는 String이라고 생각하면 되고 BIGINT는 long, INTEGER는 int로 생각하면 됨
- Not null는 비어서 안되는 값이면 체크하기 ex)아이디는 꼭 입력되어야 하므로 체크
- auto increment는 자동증가 기능을 원하면 체크하기 ex) 연번과 같은 숫자가 필요하면 체크
3. 하단의 SAVE 클릭하기 - 명령창 뜨면 persist 누르기
* 명령창 내용
CREATE TABLE PUBLIC."member" (
NUM INTEGER NOT NULL AUTO_INCREMENT, // 번호 자동증가
ID VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
);
COMMENT ON TABLE PUBLIC."member" IS '회원정보';
- persist : 저장해서 파일로 남겨진다(영속성)
-> 지금까지 만든 구조가 저장됨
4. 멤버테이블에서 Data누르고 하단에 +(로우추가) 눌러 회원정보 입력 후 저장
7교시
* 데이터베이스는 공백도 입력 가능(공백 사용하지 말 것)
대소문자 구분하지 않음
"" 내가 입력한 그대로 사용하고 싶을때 활용
● 테이블 만들기 - 방법 2 (SQL로 바로 내용 추가하기(상단의 방법은 번거로움))
1. 편집화면 열기
1-1. 익스플로러화면에서 생성한 테이블(member)에 오른쪽 마우스를 눌러 Read Data in SQL edit 누르기
1-2. 익스플로러화면에서 PUBPLIC에 오른쪽 마우스를 눌러 SQL 편집기 > 새 SQL편집기 클릭
2. 데이터입력(INSERT)
형식 : INSERT INTO 테이블명 (데이터컬럼명...) VALUES (데이터 값...);
예시 : INSERT INTO "member" (id, PASSWORD) VALUES ('san', '1234');
-- 데이터 추가하기
/*
* INSERT INTO 테이블명 (데이터컬럼명...) VALUES (데이터 값...);
*/
INSERT INTO "member" (id, PASSWORD) VALUES ('san', '1234');
-- 연습
INSERT INTO "member" (id, PASSWORD) VALUES ('kang', '4567');
INSERT INTO "member" (id, PASSWORD) VALUES ('sun', '0000');
INSERT INTO "member" (id, PASSWORD) VALUES ('bada', '1111');
- 명령문 블럭잡고 +붙은 실행버튼(주황버튼) 눌러 하나씩 실행하면 데이터가 입력 됨
3. 데이터검색(SELECT)
형식 : SELECT 보여줄 컬럼명, ... FROM 테이블명 WHERE 조건식;
예시 : SELECT * FROM "member" m ;
-- 데이터 검색하기
/* SELECT 보여줄 컬럼명, ... FROM 테이블명 WHERE 조건식;
1. 전체 레코드 전체 컬럼보기( * : 전체컬럼)
테이블에 별명적용하기 : 테이블 이름에 별명을 주어 쉽게 사용하게 한다.
구조1 : 테이블명 AS 별명 OR
구조2 : 테이블명 별명 "member"의 별명은 m
*/
SELECT * FROM "member" m;
* 전체 레코드 전체 컬럼보기( * : 전체컬럼)
* 테이블에 별명적용하기 : 테이블 이름에 별명을 주어 쉽게 사용하게 한다.
-구조1 : 테이블명 AS 별명 OR
-구조2 : 테이블명 별명 / "member" m -> m이 별명
3-1. 내가 원하는 컬럼만 검색하기
형식 : SELECT 컬럼명... FROM 테이블명;
SELECT ID, PASSWORD FROM "member" m;
※ 데이터베이스 주석의 종류
-- 단일주석
/* 멀티주석 */
/* #(샾) 단일주석 (db마다 호환성이 있음) */
* 명령문 블럭잡고 +붙은 실행버튼(주황화살표) 누르면 해당 명령만 적용되어 보임
* DROP TABLE PUBLIC."member"; // 멤버테이블을 삭제하라
* Refresh(f5) - 새로고침
* sql 명령어 구조 자동완성 - 복사하여 활용
MariaDB Foundation - MariaDB.org
… Continue reading "MariaDB Foundation"
mariadb.org