본문 바로가기

🐾 개발

미니 프로젝트 : Mango3 (1)

개요 : 실제 존재하는 '망고 플레이트'라는 웹사이트를 클론 코딩하여 진행한 프로젝트

'망고 플레이트'란? 맛집 및 리뷰 중점 웹사이트

 

1차 미니 프로젝트는 콘솔 코딩이었다. 2023년 8월에 진행했고, 4~5일 정도 소요했던 것 같다.

프론트는 따로 없고, DB와의 연결 + 기본 CRUD 개발 연습이 주 내용!

우리 조는 '망고 플레이트'의 특징 중에서 사용자 입장과 관리자 입장을 개발해보았다.

- 사용자 입장 : 로그인, 회원가입, 맛집 검색, 리뷰 작성 및 조회 등

- 관리자 입장 : 식당 정보 관리

 

 

📌 프로젝트 패키지 구성

회원, 맛집, 리뷰 패키지가 있고 예외를 관리하는 패키지를 따로 두었다. Mango3.java로 main 실행

 

참고로.. 내가 맡은 부분은! 메인, 회원, 관리자 로그인과 식당 정보 관리 ^___^ 👍🏻

파일 구성 형식 (예시)

 

 

📌 데이터베이스 관리

우리는 Oracle서비스를 이용하여 DB를 관리했다.

인터페이스를 따로 생성하여 미니 프로젝트지만 최대한 객체지향적으로 개발하도록 노력했다.

 

- DB 관리 Interface

package com.kosa.mango3.db;

public interface DBManager {
	/**
	 * DB로드
	 */
	void DBLoad();
}

 

- DB 관리 Class

package com.kosa.mango3.db;

import lombok.Getter;

@Getter
public class Oracle implements DBManager {
	@Override
	public void DBLoad() {
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			//System.out.println("JDBC Oracle 드라이버 로드성공");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return;
		}
	}
}

 

한계 : 각 dao에서 똑같은 형식으로 계속 db와 connect를 시도했다는 점

Spring에서는 properties를 통해 관리할 수 있으나, 기존 java만을 통해서는 한계가 있었다.

private Connection conn = null;
private final String url = "url";
private final String user = "user";
private final String password = "pwd";
/* 각 dao마다 모두 지역 변수를 선언해야 한다는 단점 */

 

그리고, 이 문제를 보완하기 위해 아래와 같이 새롭게 db 관리 Class를 생성하였다!

package com.my.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MyConnection {

	/**
	 * JDBC 드라이버 로드 및 DB 연결
	 * @return Connection 객체
	 * @throws Exception 드라이버 클래스를 찾지 못하거나 DB 연결 실패
	 */
	public static Connection getConnection() throws Exception {
		Class.forName("oracle.jdbc.OracleDriver");

		String url="jdbc:oracle:thin:@localhost:1521:xe";
		String user="hr";
		String password="hr";

		return DriverManager.getConnection(url, user, password);
	}

	/**
	 * DB 연결해제
	 * @param conn
	 * @param stmt
	 * @param rs
	 */
	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) { }
		}

		if(stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) { }
		}

		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) { }
		}
	}

}

 

 

📌 예외 처리

CRUD 기준으로 각 항목 예외처리 사용자 지정

 

 

다음 포스팅은 내가 작성한 코드들과 감상평을 써봐야겠당 😋

확실히 예전에 작성한 코드들이라 지금와서 보면 감회가 새로워.. 그만큼 성장했다고 믿으며.. 아디오스ㅋ