

product.pptx
0.04MB
객체 흐름.pptx
0.05MB
== DB에서(mysql, 명령프롬프트) ==
1. DB유저 생성
(mysql)
1. 내가 사용할 DB 생성 먼저: create database javadb;
2. mysql을 사용한다고 선언: use mysql;
3. 유저 생성: create user '유저명'@'localhost' identified by '비번' ;
예) create user 'javauser'@'localhost' identified by 'mysql' ;
4. 권한 설정: grant all privileges on javadb.* to 'javauser'@'localhost' with grant option;
( javadb 하위에 있는 모든 테이블을 설정할 수 있는 권한 부여 )
5. 변경사항 적용 후 새로고침(부여된 권한 사용을 위해): flush privileges;
(명령프롬프트)
6. javauser의 mysql로 이동: mysql -ujavauser -pmysql;
7. 데이터 베이스에 javadb가 있는지 확인: show databases;
2. DB생성
- javadb으로 사용설정
use javadb;
- 테이블 생성
create table product(
pno int auto_increment,
pname varchar(50) not null,
price int not null,
regdate datetime default now(),
madeby varchar(50) not null,
primary key(pno));
== java에서 ==
3. vo class 생성 = 테이블 내용을 그대로 class화
- 테이블에 있는 내용을 그대로 class로 변환!!! ( 자료형 일치중요! )
- 생성자를 용도에 맞게 만들어놔야 이후에 편함
- vo,dto : 정보를 담아 이동하는 객체!
- vo : 객체 자체의 정보, 내 테이블 하나만 가져가는 경우
- dto: 여러 테이블의 정보를 가져와서 같이 가져가는 경우 (vo보다 더 큰 범위)
public class Product {
//VO (Value Object)
//pno, pname, price, regdate, madeby
private int pno; //db에서 자동증가
private String pname;
private int price;
private String regdate;//db에서 오늘 날짜 저장 (날짜는string형)
private String madeby;
//생성자
public Product() {}
//상품등록
public Product(String pname, int price, String madeby) {
this.pname = pname;
this.price = price;
this.madeby = madeby;
}
//상품리스트 (전체)
public Product(int pno, String pname, String redate) {
this.pno = pno;
this.pname = pname;
this.regdate = redate;
}
//상품상세 (전체)
public Product(int pno, String pname, int price, String redate, String madeby) {
this.pno = pno;
this.pname = pname;
this.price = price;
this.regdate = redate;
this.madeby = madeby;
}
//상품수정 (번호, 이름, 가격, 정보)
public Product(int pno, String pname, int price, String madeby) {
this(pname, price, madeby); //생성자 호출
this.pno = pno;
}
//getter,setter
public int getPno() {
return pno;
}
public void setPno(int pno) {
this.pno = pno;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
public String getMadeby() {
return madeby;
}
public void setMadeby(String madeby) {
this.madeby = madeby;
}
//확인용 toString
@Override
public String toString() {
return "Product [pno=" + pno + ", pname=" + pname + ", price=" + price +
", regdate=" + regdate + ", madeby="+ madeby + "]";
}
+ 메인
package JDBC;
public class Main {
public static void main(String[] args) {
new ProductController();
}
}
4. controller class생성 = manager역할
: mysql과 java class를 연결!
- 전체적인 컨트롤을 연결하는 역할
- controller <-> service (service = 구현체, interface)
1. productController class생성 - class파일 우클릭 - build Path - configure.. 클릭

2. Libraries - add External JARs.. - 다운로드한 mysql-connector-java열기 - 화면에 추가된것을 확인하고 apply and close!

- 상품 등록, 전체출력, 상세출력, 수정, 삭제
- db 연동한 후 컨트롤러에서 모든 메뉴를 분기처리
- 컨트롤러 -> 서비스를 호출, 서비스 -> DAO 호출(DB구문 연결 호출)
- controller -> service(interface) -> serviceimp1(구현체)
package JDBC;
import java.util.Scanner;
public class ProductController {
//상품 등록, 전체출력, 상세출력, 수정, 삭제
//db 연동한 후 컨트롤러에서 모든 메뉴를 분기처리
//컨트롤러 -> 서비스를 호출, 서비스 -> DAO 호출(DB구문 연결 호출)
//controller -> service(interface) -> serviceimp1(구현체)
private Scanner scan;
private Service svc; //인터페이스 Service
private boolean flag; //종료변수 : (flag = false) == 종료
public ProductController() {
scan = new Scanner(System.in);
svc = new ProductService(); //service 구현객체 (생성시 Service와 연결)
flag = true;
printMenu(); //메뉴 출력 메서드 호출
}
private void printMenu() {
while(flag) {
System.out.println("--상품관리시스템--");
System.out.println("1.등록 | 2.목록 | 3.찾기");
System.out.println("4.수정 | 5.삭제 | ect.종료");
System.out.println("메뉴 선택 > ");
int menu = scan.nextInt();
switch(menu) {
case 1:
System.out.println("--등록 register 메뉴--");
register();
break;
case 2:
System.out.println("--목록 list 메뉴--");
break;
case 3:
System.out.println("--찾기 detail 메뉴--");
break;
case 4:
System.out.println("--수정 edit 메뉴--");
break;
case 5:
System.out.println("--삭제 remove 메뉴--");
break;
default:
System.out.println("종료합니다.");
flag = false;
break;
}
}
}
//각종 매뉴들 분기처리
//DAO의 메서드 명은 DB명 그대로 많이 사용
// (컨트롤러, dao)
//C(추가: register, insert, add..)
//R(조회 :list, select..)
//u(수정 : edit, update..)
//D(삭제: remove, delete.. )
//등록 메뉴
private void register() {
System.out.println("상품명: ");
String pname = scan.next();
System.out.println(pname + " 가격: ");
int price = scan.nextInt();
scan.nextLine(); //위쪽 공백(엔터)를 하단 madeby가 등록하는 것을 막기위한 공백 날림기능
System.out.println(pname + " 상세설명: ");
String madeby = scan.nextLine(); //긴내용 - scan.next()필요
//isOk변수 = DB에 등록 요청을 하고, 요청이 올바르게 이루어진 후 리턴 받는 값
//0이 들어오면 실패, 1이 들어오면 성공 (1줄의 값이 잘 들어갔으면 1이 리턴, 못들어가면 0이 리턴)
int isOk = svc.register(new Product(pname, price, madeby));
//원래) 메서드를 만들고 메인에서 호출했지만 -> 현재) 메인에서 호출하면 메서드가 생성(메서드명, 매개변수 결정해서 생성)
System.out.println("상품등록 " + (isOk>0 ? "성공":"실패"));
}
}
6. Service : dao와 controller의 중간 다리
- controller <-> service (service = 구현체, interface)
- service <-> DAO(구현체, interface)
package JDBC;
public interface Service {
int register(Product product);
}
package JDBC;
public class ProductService implements Service {
//service -> DAO 요청
private DAO dao;
public ProductService() {
dao = new ProductDAO();
}
@Override
public int register(Product product) {
// 실제 DAO에 요청처리되는 로직
System.out.println("register service 진입");
return dao.insert(product);
}
}
7. Dao(Data Access Object) 생성 = 데이터베이스 접근 객체
: DB 테이블 하나당 하나의 DAO를 작성
- CRUD 수행
- Create 쓰기
- Read 읽기
- Update 변경
- Delete 삭제
- dAO <-> DBConnection : DB와 연동을 함!
= DB연결 구문 작성필요!

7-1. DataBaseConnector (DB와 연결)
package JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnector {
private static DatabaseConnector dbc = new DatabaseConnector();
private Connection conn = null;
private String jdbcDriver = "com.mysql.cj.jdbc.Driver"; //항상 동일
private String jdbcUrl = "jdbc:mysql://localhost:3306/javadb"; //javadb는 3306의 이름
//생성자 private로 생성
private DatabaseConnector() {
try {
Class.forName(jdbcDriver); //드라이버를 로드하기위해 사용되는 메서드
//connection 하기위한 정보: url, user, password
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() {
return dbc;
}
public Connection getConnection() {
return conn;
}
}
'JSP > JSP' 카테고리의 다른 글
[jsp] (기초) param 파라미터 전달받아 출력 (0) | 2023.05.09 |
---|---|
[jsp] (기초) car 출력 연습 (0) | 2023.05.09 |
[jsp] (기초) jsp파일 화면 출력방법 (0) | 2023.05.09 |
[jsp] JSTL시작 + 연결 (0) | 2023.05.09 |
[jsp] (기초) mysql connector java, tomcat 다운 (0) | 2023.05.08 |