[Spring Boot] Oracle DB 연결하기(JDBC)

hyun-jin·2022년 11월 29일
0

📌 1. Spring Boot - jdbc, ojdbc6.jar 추가

1-1. 프로젝트에 build.gradle 열기

1-2. dependencies에 jdbc 코드 추가

  • 추가해줘야 할 코드
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation group: 'com.oracle.database.jdbc', name: 'ojdbc6', version: '11.2.0.4'

1-3. Gradle Refresh 하기

  • build.gradle 우클릭 > Gradle > Refresh Gradle Project



📌 2. DB 커넥션 설정하기

2-1. 프로젝트에 application.properties 열기

2-2. 인코딩(encoding) 설정하기

#encoding

  • server.servlet.encoding.charset=UTF-8
  • server.servlet.encoding.force=true
  • server.servlet.encoding.enabled=true

2-3. DBMS 설정하기

✔ 본인의 DB정보에 맞게 설정

#dbms

  • spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
  • spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
  • spring.datasource.username=myspring
  • spring.datasource.password=myspring

2-4. java class 만들어서 DataSource 받기

✔ jdbcRepository.java에 DB 연결을 위해 DataSource 받음

public class JdbcMemberReporsitory implements MemberRepository{
	
	private final DataSource dataSource;
	
	@Autowired
	public JdbcMemberReporsitory(DataSource dataSource) {
		this.dataSource = dataSource;
		}
   }
    

✔ 기존 JDBC 방법으로 DB연결하기

public class JdbcMemberReporsitory implements MemberRepository{
	
	private final DataSource dataSource;
	
	@Autowired
	public JdbcMemberReporsitory(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	@Override
	public Member save(Member member) {
		String sql = "INSERT INTO MEMBER VALUES (member_seq.nextval, ?)";
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();
			String generatedColums[] = {"ID"};
			pstmt = conn.prepareStatement(sql, generatedColums);
			pstmt.setString(1, member.getName());
			pstmt.executeUpdate();
			rs = pstmt.getGeneratedKeys();
			
			if(rs.next()) {
				member.setId(rs.getInt(1));
			}
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return member;
	}

	@Override
	public List<Member> findAll() {
		String sql = "select * from member";
			
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		List<Member> members = null;
		
		try {
			conn = dataSource.getConnection();			
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			members = new ArrayList<Member>();
			
			while(rs.next()) {
				Member member = new Member();
				member.setId(rs.getInt("id"));
				member.setName(rs.getString("name"));
				members.add(member);
			}
			
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return members;		
	}
}

0개의 댓글