Maven
-Java용 프로젝트 관리 도구
-필요한 라이브러리를 pom.xml에 정의
-라이브러리의 동작에 필요한 라이브러리도 자동 다운로드
MyBatis
-Java코드와 SQL쿼리를 자동으로 연결해주는 프레임워크(mapping기능)
-SQL쿼리를 XML파일로분리
-JDBC코드 간결하게 사용가능
1)기존 DAO 클래스 방식
2) Mapper interface 방식
3) Annotation 방식
package com.smhrd.database;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionManager {
static SqlSessionFactory sqlSession;
//객체 생성시 실행되는 구간(객체를 부르기만 해도 동일하게 실행되는 구간이다.)
//생성자 : 인스턴스를 생성하는 메소드
//서로 다른 인스턴스(주소 값이 서로다른 객체)도 동일한 내용을 공유한다.
//static(정적인 or 공유변수)
static {
//1) 연결할 설정 정보 가져오기
String resource = "com/smhrd/database/mybatis-config.xml";
//2) 문자열을 읽어서 진짜 파일로 되돌려준 도구를 하나 꺼내오기
Reader reader;
try {
//3) config파일을 읽어서 class path 경로형태를 가진 Reader객체로 반환
//문자열로 된 comfig파일을 진짜 해석할 수 있게 도와주는 역할
reader = Resources.getResourceAsReader(resource);
//4)config파일안에 있는 데이터베이스 정보를 기반으로
// DB랑 연결통로를 가지고 있을 수 있게 해주는 구간
sqlSession =new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
//5) DB랑 연결하고 있는 연결통로에 대한 정보를 갖고있는 객체 반환
// db연결,종료,실행 세션관리
public static SqlSessionFactory getsqlSession() {
return sqlSession;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id ="development">
<transactionManager type="JDBC"/>
<!-- DB연결설정 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@Localhost:1521:xe"/>
<property name="username" value="hr"/>
<property name="password" value="hr"/>
</dataSource>
</environment>
</environments>
<!-- Mapper 파일(SQL 쿼리문을 가지고 있는 파일) 설정하기 -->
<!-- 파일이 여러개 새성될 수 있다. -->
<mappers>
<mapper resource="com/smhrd/database/MemberMapper.xml"/>
</mappers>
</configuration>
<?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">
<!-- namespace : mapper 식별자(고유의 이름) -->
<!-- 절대 중복되면 안된다. 중복되는 순간 mapper를 찾지 못한다. -->
<mapper namespace="com.smhrd.model.DAO">
<!-- Query문 작성해서 넣는 공간 -->
<insert id="memberinsert" parameterType="com.smhrd.model.IotMember">
insert into iotmember values(#{id},#{pw},#{nickname},#{age})
</insert>
</mapper>