습관제작소

22-08-19 JavaSpring DB연결 라이브러리 설정, Spring이론 본문

SMHRD or ITSchool/JavaSpring and Boot

22-08-19 JavaSpring DB연결 라이브러리 설정, Spring이론

KUDO 2022. 8. 22. 09:26

- jdbc 연결하기


- .xml 살펴보기

root-context.xml

  • bean 이란?
<!--bean을 정의하는 파일  -->
    <!-- 
        bean : java 객체
        spring에서의 bean은 spring이 생성, 소멸을 관리 하는 객체

         bean태그를 이용해서 등록
         class : 어떤 객체를 만들것인가
        id : 변수명
        property : setName(value)
     -->
     <bean id="board" class="com.smhrd.domain.Board">
         <property name="title" value="스프링Bean"></property>
     </bean>
     <!-- 
        Board board = new Board();
        board.setTitle("스프링 Bean")
      -->

DBCP 설정


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
    xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">


    <!-- Root Context: defines shared resources visible to all other web components -->

    <!--bean을 정의하는 파일 -->
    <!-- bean : java 객체 spring에서의 bean은 spring이 생성, 소멸을 ㅘㄴ리 하는 객체 bean태그를 이용해서 
        등록 class : 어떤 객체를 만들것인가 id : 변수명 property : setName(value) -->
    <bean id="board" class="com.smhrd.domain.Board">
        <property name="title" value="스프링Bean"></property>
    </bean>
    <!-- Board board = new Board(); board.setTitle("스프링 Bean") -->



    <!-- DBCP 설정 -->
    <!-- DB와 연결에 필요한 정보를 저장할 객체 생성 (무슨 db쓸래, 아이디비번, 등등~) -->
    <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">

        <!--hikariConfig class 안에 보면 다 있다 복사해서 넣자 -->

        <!-- Driver Class -->
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver"></property>
        <!-- DB 접속 url -->
        <property name="jdbcUrl"
            value="jdbc:mysql://localhost:3306/mysql"></property>
        <!-- User ID -->
        <property name="username" value="root"></property>
        <!-- User Password -->
        <property name="password" value="12345"></property>
    </bean>


    <!-- hikariConfig를 이용해서 DBCP를 만들어 줄 객체 생성 -->
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <!-- HikariDataSource dataSource = new HikariDataSource(hikariConfig); 
            << () 안에 채워주기 -->
        <constructor-arg ref="hikariConfig"></constructor-arg>
    </bean>

    <!-- DBCP를 활용해서 JDBC 기능을 완성할 SqlSessionFactory 생성 -->
    <!-- mybatis 라이브러 안 확인 -->
    <bean id="sqlSessionFactoryBean"
        class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- sqlSessionFactoryBean.setDataSource(dataSource); -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>


    <!-- Mapper interface와 xml를 찾아낼 수 있도록 scan을 해야함 -->
    <mybatis:scan base-package="com.smhrd.mapper"></mybatis:scan>



</beans>

Mapper 채우기

  • boardMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smhrd.mapper.BoardMapper">
    
    <!-- 
   	전체 글 조회하는 SQL문
   	select * from board;
   	
   	id == 추상메서드의 이름
     -->
    <select id="boardList" resultType="com.smhrd.domain.Board">
        select * from board
    </select>
    
</mapper>
  • boardMapper.java
package com.smhrd.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.smhrd.domain.Board;

// class 가  아닌 interface로 하자.
// 이 파일이 Mapper라고 알려주자
@Mapper
public interface BoardMapper {
	
	// 전체 글 조회하는 메서드
	// 추상메서드 만들기
	public List<Board> boardList();
}
  • boardController.java
	@Autowired //이걸 사용하면 new 블라블라 사용 안해도 된다.
	private BoardMapper mapper;

Spring 흐름도

Comments