본문 바로가기
백엔드/자바

자바 - 10

by study_yeon 2023. 5. 10.

●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

 

'백엔드 > 자바' 카테고리의 다른 글

자바 - 12  (0) 2023.05.14
자바 - 11  (0) 2023.05.11
자바 - 9  (0) 2023.05.09
자바 - 8  (0) 2023.05.08
자바 - 7  (0) 2023.05.04