✍ Today I Learned
[Enum]
- 열거형(enum)이란? 관련 있는 상수들의 집합이다. class나 interface 대신 enum 키워드를 사용하여 정의하고, 콤마로 상수를 구분한다. 이때 상수는 대문자를 사용한다.
public enum Directions {
EAST, WEST, SOUTH, NORTH
}
- 정의된 enum은 다음과 같은 방법으로 사용한다.
Directions east = Directions.EAST;
- enum의 상수값은 기본적으로 0부터 시작하고, 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())를 추가한 뒤, 그 안에 원하는 상수값을 적으면 된다. 이때 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 별도로 추가해야만 한다.
values()
- 해당 enum을 배열로 반환valueOf("String")
- 전달된 문자열과 일치하는 enum의 상수 반환ordinal()
- enum 상수가 정의된 순서 반환(상수값 자체를 반환하는 게 아님)
[MySQL 개발 환경 설정]
- 데이터베이스 회사에서 자바 언어로 제어할 수 있게 제공하는 소프트웨어 = 드라이버
- MySQL 홈페이지에서 MySQL Community Server와 Connector/J의 zip 파일을 다운로드하여 설치 후 환경변수 설정을 해주었다.
- cmd를 관리자 권한으로 실행하여 설치된 폴더로 이동한 후 초기화를 해준다.
- 이때, data 폴더가 생성되는데 웬만하면 건드리지 않는 것이 좋다.
cd
- change directory 폴더 변경dir
- directory 현재 폴더의 목록 보기..
- 상위로 이동/
- 루트로 이동- 이제 root 계정으로 접속하여 데이터베이스를 선택하고 비밀번호를 설정한다. 초기 비밀번호는 없기 때문에 enter를 입력하면 된다. 초기 설정부터 나머지 설정은 다음과 같다.
mysqld --initialize-insecure
mysqld --install
net start mysql
mysql -uroot -p
mysqld --initialize-insecure
mysqld --install
net start mysql
mysql -uroot -p (초기 비밀번호는 없음 > 엔터)
mysql> use mysql
mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql';
mysql> flush privileges;
mysql> exit
(변경된 비밀번호로 재접속)
mysql -uroot -pmysql
mysql> create database javadb;
mysql> use mysql;
mysql> create user 'javauser'@'localhost' identified by 'mysql';
mysql> grant all privileges on javadb.* to 'javauser'@'localhost' with grant option;
mysql> flush privileges;
mysql> exit
(새롭게 생성한 계정으로 접속)
mysql -ujavauser -pmysql
show databases;
- MySQL설정을 마친 후 Connector/J 파일을 진행하려는 프로젝트의 lib폴더에 이동시키고 Bulid Path 설정을 해준다.
- jar 파일 우클릭 > Build Path > Add to Build Path
- DatabaseConnector 클래스를 생성하고 JDBC API를 이용하여 데이터베이스 관련 작업을 처리한다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnector {
private static DatabaseConnector dbc = new DatabaseConnector(); // static 이기 때문에 인스턴스 생성없이 사용가능
private Connection conn = null; // 데이터베이스 접속관련 규격
// Connector/J 에서 제공하는 클래스
private String jdbcDriver = "com.mysql.cj.jdbc.Driver";
// MySQL 프로그램 접근 위치
private String jdbcUrl = "jdbc:mysql://localhost/javadb";
private DatabaseConnector() {
try {
Class.forName(jdbcDriver);
conn = DriverManager.getConnection(jdbcUrl, "javauser", "mysql");
} catch (ClassNotFoundException e) {
System.out.println("드라이버를 찾을 수 없습니다."); // 라이브러리 셋팅 오류
e.printStackTrace();
} catch (SQLException e) {
System.out.println("연결 정보가 정확하지 않습니다.");
e.printStackTrace();
}
}
public static DatabaseConnector getInstance() { // 싱글톤 방식, 여기도 static
return dbc;
}
public Connection getConnection() {
return conn;
}
}
[주소록 관리 시스템]
- 데이터베이스를 이용하여 주소록 관리 시스템을 구현해보자. (데이터의 영속성)
- Select를 할 땐 Result Set을 반환 값으로 하는
executeQuery()
를 사용하고, 그 외에 데이터베이스가 변경되는 일을 할 땐executeUpdate()
를 사용한다. - 싱글톤 패턴(Singleton pattern)이란? 프로그램이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다.
Insert
mysql> insert into address values(?,?,?)
- 입력받은 이름, 나이, 전화번호 등의 데이터를 데이터베이스로 넘겨서 저장하고, 결과를 true or false로 반환한다.
Select
mysql> select * from address
- 전달해주는 데이터 없이 전체 데이터 리스트를 List 타입으로 리턴 받는다.
'📝 TIL' 카테고리의 다른 글
[TIL] JSP, 톰캣, 서블릿 (0) | 2022.05.30 |
---|---|
[TIL] Java 주소록, 상품관리, 호텔관리 시스템 (0) | 2022.05.27 |
[TIL] Java ArrayList, HashSet, HashMap, Generic (0) | 2022.05.24 |
[TIL] Java 피카츄 게임, 웹 서비스 프로그램 (0) | 2022.05.23 |
[TIL] Java 인터페이스, 내부클래스, 예외처리 (0) | 2022.05.20 |