분류 전체보기

    [mybatis] SQL mapper(맵퍼) 파일

    mybatis의 가장 중요한 목적 중 하나는 DAO로부터 SQL 문을 분리하는 것이다. 이렇게 분리된 SQL문은 SqlSession에서 사용한다. 다음 코드는 전 포스팅에 작성한 SQL 맵퍼 파일이다. 📌SQL mapper MySqlProjectDao.xml select PNO, PNAME, STA_DATE, END_DATE, STATE from PROJECTS order by PNO desc insert into PROJECTS(PNAME,CONTENT,STA_DATE,END_DATE,STATE,CRE_DATE,TAGS) values (#{title},#{content},#{startDate},#{endDate},0,now(),#{tags}) select PNO, PNAME, CONTENT, STA_D..

    [mybatis] mybatis 적용

    [mybatis] mybatis 적용

    https://yeo-computerclass.tistory.com/231 [JSP & Servlet] 프로젝트 관리 글을 작성하면서 DataBinding 하는 부분은 빼고 작성하도록 하겠다. 이 부분은 작성하지 않아도 코드를 수정하여 충분히 구현할 수 있을 것이라 본다. 📌테이블 생성 멤버(Members) 테이블 CREATE TABLE m yeo-computerclass.tistory.com JSP & Servlet으로 구현한 프로젝트 관리에 mybatis를 적용해보도록 하겠다. 📌mybatis 흐름도 위 프로젝트 관리에서 mybatis를 이용하여 프로젝트 목록을 가져오는 흐름을 설명하도록 하겠다. 아래에 계속 설명을 보다가 이해를 돕기 위해서 mybatis 흐름도를 계속 보길 바란다. MySqlPro..

    [mybatis] mybatis(마이바티스)란? (mybatis 환경세팅)

    [mybatis] mybatis(마이바티스)란? (mybatis 환경세팅)

    mybatis란? mybatis는 JDBC 프로그래밍을 단순화하기 위해 만들어졌다. mybatis의 핵심 개발과 유지보수가 쉽도록 소스 코드에 박혀있는 SQL을 별도의 파일로 분리하는 것이다. 단순하고 반복적인 JDBC 코드를 캡슐화하여 데이터베이스 프로그래밍을 간결하게 만드는 것이다. ▶ProjectDao.java try { connection = ds.getConnection(); stmt = connection.prepareStatement("UPDATE PROJECTS SET " + " PNAME=?," + " CONTENT=?," + " STA_DATE=?," + " END_DATE=?," + " STATE=?," + " TAGS=?" + " WHERE PNO=?"); stmt.setString..

    퍼시스턴스 프레임워크(Persistence Framework)란?

    📌퍼시스턴스 프레임워크(Persistence Framework)란? 자세한 설명에 앞서 단도직입적으로 말하면 퍼시스턴스 프레임워크(persistence framework)를 사용하면 직접 JDBC API를 호출하지 않고도 DB에 있는 데이터를 다룰 수 있다. 퍼시스턴스 프레임워크(persistence framework)가 JDBC API를 대신 호출해주기 때문에 개발자가 JDBC 프로그래밍으로부터 해방되게 해준다. 💡퍼시스턴스(Persistence) 퍼시스턴스(Persistence)는 데이터의 지속성을 의미한다. 즉 애플리케이션을 종료하고 다시 실행하더라도 이전에 저장한 데이터를 다시 불러올 수 있는 기술이다. 💡프레임워크(Framework) '라이브러리(Library)'가 개발에 필요한 도구들을 단순히..

    [JSP & Servlet] 프로젝트 관리

    글을 작성하면서 DataBinding 하는 부분은 빼고 작성하도록 하겠다. 이 부분은 작성하지 않아도 코드를 수정하여 충분히 구현할 수 있을 것이라 본다. 📌테이블 생성 멤버(Members) 테이블 CREATE TABLE members( mno INT PRIMARY KEY, --회원일련번호 email VARCHAR(40) NOT NULL,--이메일 pwd VARCHAR(100) NOT NULL, --암호 mname VARCHAR(50) NOT NULL,--이름 cre_date DATETIME NOT NULL,--가입일 mod_date DATETIME NOT NULL --마지막암호변경일 ) COMMENT '회원기본정보'; CREATE UNIQUE INDEX UIX_MEMBERS ON members( --회..

    필터(Filter) 사용하기

    필터(Filter)란? 필터는 서블릿 실행 전후에 어떤 작업을 하고자 할때 사용하는 기술이다. 예를 들어 서블릿이 실행되기 전 자원이 필요하다거나, 모든 각 서블릿에 한글 인코딩 , 시간 측정등과 같은 반복적으로 처리해야 하는 공통 작업을 미리 필터에서 처리하여 번거로움이 줄어든다. 필터는 용도에 따라 2 가지로 나뉜다. 요청 필터 인코딩 기능 사용자 인증 및 권한 검사 요청 시 요청 관련 로그 작업 응답 필터 서비스 시간 측정 응답 결과에 대한 암호화 작업 필터 관련 API javax.servlet.Filter init(): 필터 생성 시 컨테이너에 의해 호출되어 초기화 작업을 수행 doFilter(): 요청/응답 시 컨테이너에 의해 호출되어 기능을 수행 destory(): 필터 소멸 시 컨테이너에 의..

    요청(request) URL 정보 추출하기

    HttpServletRequest의 메소드로 URL 정보 추출 요청 URL에서 특정 정보만 추출하는 HttpServletRequest의 메소드는 다음과 같다. 메소드 설명 반환값 getRequestURL() 요청 URL 리턴(단, 매개변수 제외) http://localhost:8080/web/member/list.do getRequestURI() 서버 주소를 제외한 URL /web/member/list.do getContextPath() 웹 애플리케이션 경로 /web getServletPath() 서블릿 경로 /member/list.do getQueryString() 요청 매개변수 정보 pageNo=1&pageSize=10 사용 예) 클라이언트가 요청한 서블릿의 경로를 알고 싶으면 getServletPa..

    커넥션풀(Connection Pool) (DataSource와 JNDI) (feat. MySQL)

    커넥션풀(Connection Pool) (DataSource와 JNDI) (feat. MySQL)

    📌DB Connection Pool JDBC를 통해 연동하였을 때, 웹 클라이언트에서 요청할 때마다 DB 서버에 연결하기 위해 Connection 객체를 얻어야 한다. SQL 작업을 할 때마다 DB Connection 객체를 생성한다면, 실행 속도가 느려지고 많은 Gabage가 생성될 것이다. 실행 속도가 느려지는 이유는 Connection을 맺을 때마다 DB 서버는 사용자 인증과 권한 검사를 수행하고 요청 처리를 위한 준비 작업을 해야 하기 때문이다. 이런 문제를 해결하기 위해 DB Connection Pool이 등장하였다. DB ConnectionPool을 이용하면, 각 요청에 대해 별도의 Connection 객체를 사용하기 때문에 다른 작업에 영향을 주지 않는다. 또한 사용한 DB Connectio..