log4j - Member

조수경·2021년 11월 30일
1

고급자바

목록 보기
82/97

Root logger option

  1. 로그 출력 Level은 INFO부터 할것임.
  2. rootLogger 에 사용할 로깅 Appender로 stdout이라는것과
    logfile이라는 것 두가지를 사용하겠다
    #log4j.rootLogger=debug, stdout(콘솔에 출력), logfile(파일에 출력)
    log4j.rootLogger=trace, stdout ,logfile

Direct log messages to stdout
ConversionPattern은 로그가 어떠한 형식으로 출력될것인지
그 포맷을 정의하는 것.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%C{2}:%L) - %m%n

Direct log message to log file
logfile이라는 appender는 로그를 파일로 출력해주는 놈인데,
파일path를 정의 할 수 있다.
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=D:/application.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n
log4j.appender.logfile.Append=true

Sql log
이곳이 java.sql.* 을 사용하는 쿼리를 보여주는 설정.
#log4j.logger.java.sql.Connection=DEBUG, logfile
#log4j.logger.java.sql.Statement=DEBUG, logfile
#log4j.logger.java.sql.PreparedStatement=DEBUG, logfile
#log4j.logger.java.sql.ResultSet=DEBUG, logfile

LogMessageTest

package kr.or.ddit.basic;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class LogMessageTest {

	//Logger 클래스의 인스턴스를 받아온다.(로그기록을 남기는 Class파일)
	static Logger logger = Logger.getLogger(LogMessageTest.class);
	
	
	public static void main(String[] args) {

		//메시지 출력하기 (사용하는 메서드명이 Logger의 레벨명과 같다.)
		//형식1) Logger객체변수.출력할 레벨명(출력할 메시지)
		logger.trace("이것은 log4j의 [TRACE]레벨의 출력입니다");
		logger.debug("이것은 log4j의 [DEBUG]레벨의 출력입니다");
		logger.info("이것은 log4j의 [INFO]레벨의 출력입니다");
		logger.warn("이것은 log4j의 [WARN]레벨의 출력입니다");
		logger.error("이것은 log4j의 [ERROR]레벨의 출력입니다");
		logger.fatal("이것은 log4j의 [FATAL]레벨의 출력입니다");
		
		//형식2) Logger객체변수.log(Level.레벨명, "출력할메시지")
		logger.log(Level.INFO, "log() 메서드를 이용한 DEBUG레벨 출력입니다.");
		
		
		
		
	}

}

MemberController : 그대로임!

package kr.or.ddit.mvc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.service.IMemberService;
import kr.or.ddit.service.MemberServiceImpl;

public class MemberController {
	
	private Scanner scan;
	private IMemberService service; //service객체 변수 선언
	
	//생성자
	public MemberController() {
		scan = new Scanner(System.in);
		//service = new MemberServiceImpl();
		service = MemberServiceImpl.getInstance();
		
	}

	public static void main(String[] args) {
       new MemberController().memberStart();
	}

	public void memberStart(){
		while(true){
			int choice = displayMenu();
			switch(choice){
				case 1 :	// 추가 
					insertMember(); break;
				case 2 : 	// 삭제
					deleteMember(); break;
				case 3 : 	// 수정  ==> 전체 항목 수정
					updateMember(); break;
				case 4 : 	// 전체 자료 출력
					displayMember(); break;
				case 5 : 	// 수정	==> 원하는 항목만 수정
					updateMember2(); break;
				case 0 : 	// 종료
					System.out.println("작업을 마칩니다.");
					return;
				default : 
					System.out.println("번호를 잘못 입력했습니다. 다시입력하세요.");
			}
		}
	}


	// 전체 자료 출력
	  private void displayMember() {
		
		List<MemberVO> cnt = service.getAllMember();
		System.out.println("======================전체출력======================");
		System.out.println("아이디         이름        비밀번호               전화번호               주소");
		
		if(cnt==null || cnt.size()==0){
			  System.out.println("출력할 회원정보가 없습니다.");
		}else{
		for(MemberVO memVo:cnt){
		
			System.out.print(memVo.getMem_id()+"\t");
			System.out.print(memVo.getMem_name()+"\t");
			System.out.print(memVo.getMem_pass()+"\t");
			System.out.print(memVo.getMem_tel()+"\t");
			System.out.println(memVo.getMem_addr()+"\t");
		}
		System.out.println("=================================================");
	  }
	  }
	  

	// 수정	==> 원하는 항목만 수정
    private void updateMember2() {
    	System.out.println();
		System.out.println("수정할 회원 정보를 입력하세요.");
		System.out.print("수정할 회원ID >> ");
		String memId = scan.next();
		
		int count = service.getMemberCount(memId);
		if(count==0){ // 없는 회원이면...
			System.out.println(memId + "은(는) 없는 회원ID입니다.");
			System.out.println("수정 작업을 중단합니다.");
			return;
		}
		
		int num; // 수정할 컬럼에 대한 선택 값이 저장될 변수
		String updateField = null;
		String updateTitle = null;
		do{
			System.out.println();
			System.out.println("수정할 항목을 선택하세요.");
			System.out.println(" 1.회원이름  2.비밀번호  3.전화번호  4.회원주소");
			System.out.println("----------------------------------------------");
			System.out.print("수정할 항목 선택 >> ");
			num = scan.nextInt();
			
			switch(num){
				case 1 : updateField = "mem_name";
						 updateTitle = "회원이름"; break;
				case 2 : updateField = "mem_pass";
						 updateTitle = "비밀번호"; break;
				case 3 : updateField = "mem_tel";
						 updateTitle = "전화번호"; break;
				case 4 : updateField = "mem_addr";
						 updateTitle = "회원주소"; break;
				default : 
					System.out.println("수정할 항목을 잘못 선택했습니다.");
					System.out.println("다시 선택하세요.");
			}
		}while(num<1 || num>4);
		
		scan.nextLine();  // 입력 버퍼 비우기
		System.out.println();
		System.out.print("새로운 " + updateTitle + " >> ");
		String updateData = scan.nextLine();
		
		//수정 작업에 필요한 데이터들을 Map에 저장한다
		Map<String, String> paramMap = new HashMap<String, String>();
		
		paramMap.put("field", updateField);
		paramMap.put("data", updateData);
		paramMap.put("memid", memId);
		
		int cnt = service.updateMember2(paramMap); 
		
		if(cnt>0){
			System.out.println("개별 정보 수정 작업 성공!!");
		}else{
			System.out.println("개별 정보 수정 작업 실패~~");
		}
		
		
	}
    
    
	// 수정  ==> 전체 항목 수정
	private void updateMember() {
		
		System.out.println();
		System.out.println("수정할 회원 정보를 입력하세요.");
		System.out.print("수정할 회원ID >> ");
		String memId = scan.next();
		
		int count = service.getMemberCount(memId);
		if(count==0){ // 없는 회원이면...
			System.out.println(memId + "은(는) 없는 회원ID입니다.");
			System.out.println("수정 작업을 중단합니다.");
			return;
		}
		
		System.out.println();
		System.out.println("수정할 내용을 입력하세요.");
		System.out.print("새로운 회원이름 >> ");
		String newMemName = scan.next();
		
		System.out.print("새로운 비밀번호 >> ");
		String newMemPass = scan.next();
		
		System.out.print("새로운 전화번호 >> ");
		String newMemTel = scan.next();
		
		scan.nextLine();
		System.out.print("새로운 회원주소 >> ");
		String newMemAddr = scan.nextLine();
		
		//입력한 데이터들을 VO객체에 저장한다.
				MemberVO memVo = new MemberVO();
				memVo.setMem_id(memId);
				memVo.setMem_name(newMemName);
				memVo.setMem_pass(newMemPass);
				memVo.setMem_tel(newMemTel);
				memVo.setMem_addr(newMemAddr);
				
				int cnt = service.updateMember(memVo);
				if(cnt>0){
					System.out.println("수정 스엉공");
				}else{
					
					System.out.println("수정 실패");
				}
	}

	// 추가 
	private void insertMember(){

		System.out.println();
		System.out.println("추가할 회원 정보를 입력하세요.");
		
		int count = 0;
		String memId = null;  // 회원ID가 저장될 변수
		do{
			System.out.print("회원ID >> ");
			memId = scan.next();
			
			count = service.getMemberCount(memId);
			
			if(count>0){
				System.out.println(memId + "은(는) 이미 등록된 회원ID입니다.");
				System.out.println("다른 회원ID를 입력하세요.");
			}
			
		}while(count>0);
		
		System.out.print("회원이름 >> ");
		String memName = scan.next();
		
		System.out.print("비밀번호 >> ");
		String memPass = scan.next();
		
		System.out.print("전화번호 >> ");
		String memTel = scan.next();
		
		scan.nextLine();  // 입력 버퍼 비우기
		System.out.print("회원주소 >> ");
		String memAddr = scan.nextLine();
		
		//입력한 데이터들을 VO객체에 저장한다.
		MemberVO memVo = new MemberVO();
		memVo.setMem_id(memId);
		memVo.setMem_name(memName);
		memVo.setMem_pass(memPass);
		memVo.setMem_tel(memTel);
		memVo.setMem_addr(memAddr);
		
		int cnt = service.insertMember(memVo);
		if(cnt>0){
			System.out.println("추가 스엉공");
		}else{
			System.out.println("추가 실패");
		}
		
	}
	
	// 삭제
	private void deleteMember(){
		System.out.println();
		System.out.println("삭제할 회원 정보를 입력하세요.");
		
		String memId = null;  // 회원ID가 저장될 변수
		
			System.out.print("회원ID >> ");
			memId = scan.next();
			
			int cnt = service.deleteMember(memId);
			if(cnt>0){
				System.out.println("삭제 스엉공");
			}else{
				System.out.println("삭제 실패");
			}
		
	}

	// 메뉴를 출력하고 선택한 작업 번호를 반환하는 메서드
		private int displayMenu(){
			System.out.println();
			System.out.println("== 작업 선택 ==");
			System.out.println("1. 자료 추가 ");
			System.out.println("2. 자료 삭제");
			System.out.println("3. 자료 수정");
			System.out.println("4. 전체 자료 출력");
			System.out.println("5. 자료 수정2");
			System.out.println("0. 작업 끝.");
			System.out.println("==================");
			System.out.print("원하는 작업 선택 >> ");
			int num = scan.nextInt();
			return num;
		}
	
}

IMemberDao : 그대로~

package kr.or.ddit.mvc.dao;

import java.util.List;
import java.util.Map;

import kr.or.ddit.mvc.vo.MemberVO;

/**
 * 
 * 실제 DB서버에 연결해서 SQL문을 수행하여 결과를 작성해서
 * Service에 전달하는 DAO의 interface
 * 
 * @author PC-06
 *
 */
public interface IMemberDao {

	/**
	 * MemberVO에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memvo DB에 insert할 자료가 저장된 MemberVO객체
	 * @return insert 작업성공 : 1이상의 정수, insert 작업 실패 : 0 
	 */
	public int insertMember(MemberVO memvo);
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원 정보를 삭제하는 메서드
	 * @param memId 삭제할 회원ID
	 * @return 삭제성공 : 1, 삭제실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO 자료를 이용하여 회원 정보를 Update하는 메서드
	 * @param memvo update할 회원 정보가 저장된 MemberVO객체
	 * @return 수정성공 : 1, 수정실패 : 0
	 */
	public int updateMember(MemberVO memId);
	
	/**
	 * DB의 회원 테이블의 전체 레코드를 가져와서
	 * List에 담아서 변환하는 메서드 
	 * @return MemberVO객체를 담고 있는 List
	 */
	
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원테이블의 개수를 반환하는 메서드
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID 개수
	 */
	public int getMemberCount(String memId);
	
	/**
	 * 수정할 정보를 갖는 Map을 인수값으로 받아서 회원정보를 수정하는 메서드
	 * @param paramMap 수정할 정보를 갖는 Map객체
	 *        (key : field(수정할 컬럼명), data(수정할 값), memid(수정할회원ID))
	 * @return 수정작업 성공 : 1 , 수정작업실패 : 0
	 */
	//update mymember set 수정할 컬럼명 = 수정할 값 where mem_id=수정할 회원 ID
	
	//public int updateMember2(String updateField, String updateData, String memId);
	public int updateMember2(Map<String, String> paramMap);
	
	
	
}

MemberDaoImpl: 이게 엄청 바뀜

package kr.or.ddit.mvc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.util.DBUtil3;


// 아래의 클래스에 Log기록 남기기
// 사용 객체 , 실행한 SQL문, SQL문에 사용한 데이터,
// 작업 성공 여부 등을 기록으로 남겨 보시오.
public class MemberDaoImpl implements IMemberDao {
	static Logger logger = Logger.getLogger(MemberDaoImpl.class);
	
	// 1번
	private static MemberDaoImpl dao;
	
	// 2번
	private MemberDaoImpl(){ }
	
	// 3번
	public static MemberDaoImpl getInstance(){
		if(dao==null) dao = new MemberDaoImpl();
		
		return dao;
	}
	

	@Override
	public int insertMember(MemberVO memvo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0;   // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			//logger.info("Connection객체 생성 완료!!");
			
			String sql = "insert into mymember "
					+ "(mem_id, mem_name, mem_pass, mem_tel, mem_addr) "
					+ "values(?, ?, ?, ?, ?) ";
			
			pstmt = conn.prepareStatement(sql);
			logger.debug("PreparedStatement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			pstmt.setString(1, memvo.getMem_id());
			pstmt.setString(2, memvo.getMem_name());
			pstmt.setString(3, memvo.getMem_pass());
			pstmt.setString(4, memvo.getMem_tel());
			pstmt.setString(5, memvo.getMem_addr());
			logger.debug("사용 데이터 : [" + memvo.getMem_id() + ", "
					+ memvo.getMem_name() + ", "
					+ memvo.getMem_pass() + ", " 
					+ memvo.getMem_tel() + ", " 
					+ memvo.getMem_addr() + "]");
			
			cnt = pstmt.executeUpdate();
			logger.info("insert 작업 성공!!");
			
		} catch (SQLException e) {
			cnt = 0;
			//e.printStackTrace();
			logger.error("insert 작업중 오류 발생", e);
			
		} finally {
			if(pstmt!=null) 
				try{ 
					pstmt.close(); 
					logger.debug("PreparedStatement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}
		
		return cnt;
	}

	@Override
	public int deleteMember(String memId) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0; // 반환값 변수
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			
			String sql = "delete from mymember where mem_id = ? ";
			
			pstmt = conn.prepareStatement(sql);
			logger.debug("PreparedStatement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			pstmt.setString(1, memId);
			logger.debug("사용 데이터 : [" + memId + "]");
			cnt = pstmt.executeUpdate();
			logger.info("delete작업 성공~~");
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally{
			if(pstmt!=null) 
				try{ 
					pstmt.close(); 
					logger.debug("PreparedStatement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}
		
		return cnt;
	}

	@Override
	public int updateMember(MemberVO memvo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0; // 반환값 변수
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			
			String sql = "update mymember "
					+ " set mem_name = ?, mem_pass = ?, mem_tel = ?, mem_addr = ? "
					+ " where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			
			logger.debug("PreparedStatement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			pstmt.setString(1, memvo.getMem_name());
			pstmt.setString(2, memvo.getMem_pass());
			pstmt.setString(3, memvo.getMem_tel());
			pstmt.setString(4, memvo.getMem_addr());
			pstmt.setString(5, memvo.getMem_id());
			
			logger.debug("사용 데이터 : [" + memvo.getMem_name() + ", "
					+ memvo.getMem_pass() + ", " 
					+ memvo.getMem_tel() + ", " 
					+ memvo.getMem_addr() + ", "
					+ memvo.getMem_id() + "]");
			
			cnt = pstmt.executeUpdate();
			logger.info("update 작업 성공~~");
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally{
			if(pstmt!=null) 
				try{ 
					pstmt.close(); 
					logger.debug("PreparedStatement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}
		
		return cnt;
	}

	@Override
	public List<MemberVO> getAllMember() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		
		List<MemberVO> memList = new ArrayList<>();  // 반환값이 저장될 변수 선언
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			
			String sql = "select * from mymember";
			
			stmt = conn.createStatement();
			
			logger.debug("Statement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			rs = stmt.executeQuery(sql);
			
			logger.info("SQL문 실행 결과");
			while(rs.next()){
				// 반복처리 부분에서는 한 레코드의 데이터를 VO에 담고
				// 데이터가 저장된 VO를 List에 추가하는 작업을 진행한다.
				
				// 1개의 레코드 값들을 VO에 저장하기
				MemberVO memVo = new MemberVO();  // VO객체 생성
				
				// 한 레코드의 각 컬럼값들을 VO에 저장한다.
				memVo.setMem_id(rs.getString("mem_id"));
				memVo.setMem_name(rs.getString("mem_name"));
				memVo.setMem_pass(rs.getString("mem_pass"));
				memVo.setMem_tel(rs.getString("mem_tel"));
				memVo.setMem_addr(rs.getString("mem_addr"));
				
				memList.add(memVo);  // VO객체를 List에 추가한다.
				logger.info("[" + memVo.getMem_id() + ", "
						+ memVo.getMem_name() + ", "
						+ memVo.getMem_pass() + ", " 
						+ memVo.getMem_tel() + ", " 
						+ memVo.getMem_addr() + "]");
			}
			
		} catch (SQLException e) {
			memList = null;
			e.printStackTrace();
		} finally {
			if(rs!=null) 
				try{ 
					rs.close();
					logger.debug("ResultSet객체 반납...");
				}catch(SQLException e){}
			if(stmt!=null) 
				try{ 
					stmt.close(); 
					logger.debug("Statement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}

		return memList;
	}

	@Override
	public int getMemberCount(String memId) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int count = 0; // 반환값 저장 변수
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			
			String sql = "select count(*) cnt from mymember "
					+ " where mem_id = ? ";
			
			pstmt = conn.prepareStatement(sql);
			
			logger.debug("PreparedStatement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			pstmt.setString(1, memId);
			
			logger.debug("사용 데이터 : [" + memId + "]");
			
			rs = pstmt.executeQuery();
			
			logger.info("SQL문 실행 결과");
			if(rs.next()){
				count = rs.getInt("cnt");
				logger.info("[" + count + "]");
			}
			
		} catch (SQLException e) {
			count = 0;
			e.printStackTrace();
		} finally{
			if(rs!=null) 
				try{ 
					rs.close();
					logger.debug("ResultSet객체 반납...");
				}catch(SQLException e){}
			if(pstmt!=null) 
				try{ 
					pstmt.close(); 
					logger.debug("PreparedStatement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}
		
		return count;
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; 	// 반환값 저장 변수
		
		try {
			conn = DBUtil3.getConnection();
			logger.debug("Connection객체 생성 완료!!");
			
			// update mymember set 수정할컬럼명 = 수정할값 where mem_id=수정할회원ID
			String sql = "update mymember "
					+ " set " + paramMap.get("field") + " = ? "
					+ " where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			
			logger.debug("PreparedStatement객체 생성");
			logger.debug("실행 SQL : " + sql);
			
			pstmt.setString(1, paramMap.get("data"));
			pstmt.setString(2, paramMap.get("memid"));
			
			logger.debug("사용 데이터 : [" + paramMap.get("data") + ", "
					+ paramMap.get("memid") + "]");
			
			cnt = pstmt.executeUpdate();
			logger.info(paramMap.get("field") + "항목의 값을 " 
					+ paramMap.get("data") + "으로 변경 성공!!");
			
		} catch (SQLException e) {
			cnt = 0;
			e.printStackTrace();
		} finally {
			if(pstmt!=null) 
				try{ 
					pstmt.close(); 
					logger.debug("PreparedStatement객체 반납...");   
				}catch(SQLException e){}
			if(conn!=null) 
				try{ 
					conn.close();
					logger.debug("Connection객체 반납...");
				}catch(SQLException e){}
		}
		
		return cnt;
	}

}

DBUtil3

package kr.or.ddit.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;

import org.apache.log4j.Logger;

// JDBC드라이버를 로딩하고 Connection객체를 생성하는 메서드로 구성된 class 만들기
// (dbinfo.properties파일의 내용으로 설정하는 방법)

//방법2 : ResourceBundle객체 이용하기

public class DBUtil3 {
	static final Logger logger = Logger.getLogger(DBUtil3.class);
	
	private static ResourceBundle bundle; //ResourceBundle객체 변수 선언
	
    //static 초기화 블럭
	static{
		
		bundle = ResourceBundle.getBundle("kr.or.ddit.config.dbinfo");
		logger.info("ResurceBundle객체 생성 - dbinfo.properties파일 읽기");
		
		try {
			
			Class.forName(bundle.getString("driver"));
		//	Class.forName("oracle.jdbc.driver.OracleDriver");
			logger.info("DB드라이버 로딩 성공!!!");
			
		} catch (ClassNotFoundException e) {
			//System.out.println("드라이버 로딩 실패~~~");
			logger.error("드라이버 로딩 실패~~~", e);
			//e.printStackTrace();
		}
	}

	public static Connection getConnection(){
		try {
			
			/*return  DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "JSG99", "java");*/
			
			Connection conn = DriverManager.getConnection(
					bundle.getString("url"), 
					bundle.getString("user"), 
					bundle.getString("pass"));
			logger.info("DB 연결 성공~~");
			
			return conn;
			
		} catch (SQLException e) {
			//System.out.println("오라클 연결 실패!!!");
			logger.error("DB 연결 실패!!", e);
			return null;
		}
	}
}
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보