초보 개발자의 기록

MVC패턴이용한 어플리케이션 개발(2) 본문

JAVA/MVC pattern

MVC패턴이용한 어플리케이션 개발(2)

bambinodeveloper 2020. 12. 17. 01:20
728x90

new할 때마다 instance가 여러개 만들어짐 (sqlSessionFactory 다수가 메모리에 올라옴 =메모리누수)

singleton이용 (instance)

new하지않고 접근하려면 static이용

 

MybatisConfigManager.java

package com.practice.mybatis.config;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisConfigManager {
	String resource = "com/practice/mybatis/config/config.xml";
	InputStream inputStream;
	SqlSessionFactory sqlSessionFactory;
	private static MybatisConfigManager instance;
	
	private MybatisConfigManager() {
		try {
			inputStream = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			e.printStackTrace();
		}
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	
	public static MybatisConfigManager getInstance() {
		if(instance == null) {
			instance = new MybatisConfigManager(); //나의 생성자는 내가 호출가능
		}
		return instance;
	}

	//SqlSession을 반환하는 메서드
	public SqlSession getSqlSession() {
		SqlSession sqlSession= null;
		sqlSession = sqlSessionFactory.openSession();
		return sqlSession;
	}
	
	public void close(SqlSession sqlSession) {
		if(sqlSession!=null) {	
			sqlSession.close();
		}
	}
}

 

쿼리문 들어간 xml필요

resultType : select문 실행결과를 담을 객체 

resultMap : select문 실행결과를 담을 객체를 resultMap으로 지정 <resultMap>선언해줘야함

parameterType : 이 속성에  지정한 객체의 프로퍼티(#{프로퍼티}) 값이 SQL문의 입력 파라미터에 지정됨

                       <select>, <insert>, <update>, <delete>

 

config.xml

Alias 설정

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
		<typeAlias type="com.practice.board.model.Notice"
			alias="Notice" /> 
	</typeAliases>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="JNDI">
        <property name="data_source" value="java:comp/env/jdbc/mariadb"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/practice/mybatis/mapper/NoticeMapper.xml"/>
  </mappers>
</configuration>

MVC ?

M odel : 로직, 데이터 자체를 의미

V : 디자인,  jsp

C

 

jsp나 servlet 둘다 웹서버에서 해석 및 실행되어지므로, 글 등록 요청을 처리할 때는 둘다 가능

앞으로 jsp는 서블릿의 디자인적 처리시 단점을 보완하기 위해 개발된 기술로, jsp는 주로 디자인 영역에서 사용

RegistServlet.java

728x90
반응형