728x90
반응형

분류 전체보기 477

Jdbc-Template 과 mybatis의 SqlSessionTemplate의 각각의 개념과 차이점

Jdbc-Template 과 mybatis 의 SqlSessionTemplate Jdbc-Template란? 전통방식으로 구현하는 JDBC로직을 단 두,세줄로 처리해버릴수 있는 Spring API입니다. update문 같은 경우에는 쿼리문을 포함하여 단 두줄로도 구현하여 처리할수도 있습니다. 자원을 내부적으로 생성하고 해제함으로써 전통방식의 JDBC의 코드구현을 단순화시킵니다. Connection, PrepareStatement, ResultSet - 각각 연결, 수행, 결과를 수행해주는 객체들 을 사용 한 후 이것을 닫아줘야 하는데 Jdbc-Template에서는 수행객체 사용을 마친 후 닫아주는 처리 또한 내부적으로 해줍니다. 우리가 Jdbc-Template를 사용하기위해 컨테이너에 jdbcTempla..

[커넥션풀] ConnectionPool이란? / 커네션풀 적용및 JdbcTemplate 에서의 활용

ConnectionPool이란? - 여러명의 사용자를 동시에 처리하는 웹 어플리케이션 - DB연결을 이용할 때 매번 연결하는 방식이 아닌 미리 연결을 맺고 사용하는 Connection Pool을 이용해 성능을 향상시킵니다. - 커넥션 풀링은 미리 정해진 개수만큼 DB커넥션을 풀에 준비해두고, 어플리케이션이 요청할 때 마다 Pool로부터 꺼내와서 할당하며, 다시 돌려받아서 Pool에 넣는 기법입니다. 속도면에서 빠르며, 스프링에서는 최근 유행하는 HicariCP라이브러리를 사용합니다. [DataSource] - DB에 이용되는 URL,id,pw,DriverClass를 미리 정의해 놓고 사용하는 객체입니다. - Spring-JDBC에서 기본으로 제공합니다. - 여러 커넥션풀 라이브러리에서 기본으로 제공합니다..

JSP&Servlet/BASIC 2020.09.02

OracleDriver [Junit] 주입한 OracleDriver라이브러리가 올바로 작동하는지 스프링의 단위테스트인 Junit를 통해 Test

[try-catch-finally] public class OraDBConTest { private static final String Driver = "oracle.jdbc.OracleDriver"; private static final String URL = "jdbc:oracle:thin:HostIp:포트번호:DB명"; private static final String USER="사용자명"; private static final String PW="비밀번호"; @Test public void testCon() throws Exception{ try { Class.forName(driver); con = DriverManager.getConnection(URL,USER,PW); if(conㅜ != n..

커넥션풀 [ HikariCP ] HikariConfig / JDBC Template , MyBatis 빈 등록 및 의존성주입 / root-context.xml

HikariCP root-context.xml에 다음 코드를등록합니다. 천천히 코드를 살펴보며 각각의 기능과 의존성관계를 설명하겠습니다. HikariCP 공통 빈 등록 [ HikariConfig ] @DB정보를 주입하는 HikariCP의 라이브러리 HikariConfig입니다. HikariConfig의 각 필드에 setter()로 DB정보들을 주입합니다. hikariconfig라는 이름으로 빈 등록을 합니다. 만약 hikariconfig에서 setter()로 DB정보를 주입받지 않았다면, HikariDataSource가 어딘가로 부터 실행, 로드될때 NullPointerException이 발생하게 됩니다. [ HikariDataSource ] @ DB정보를 담아주는 DataSource 역할을 제공하는 H..

SpringFramework/XML 2020.09.01

HikariCP ConnectionPool 라이브러리 MavenDependencies 주입 pom.xml

구글에 MavenRepository를 검색합니다 https://mvnrepository.com MavenRepository홈페이지에 접속 후 검색창에 HikariCP를 검색합니다. 원하시는 버전을 선택합니다. 보통은 가장 많이 사용하는 버전이 안정화가 잘 되있는 경우가 많으니 참고하시어 버전을 선택하세요. . . . com.zaxxer HikariCP 3.3.1 . . . 제가 사용하는 HikariCP 3.3.1 버전의 코드입니다 라이브러리를 추가하고자 하는 프로젝트의 pom.xml파일을 열고 해당 코드를 추가합니다. 해당 라이브러리는 의존라이브러리 이기 때문에 태그 사이에 넣어줘야합니다. pom.xml 파일 저장후 이클립스 화면 우측하단을 보시면 메이븐빌딩이 되는게 확인됩니다. 메이븐빌딩이 완료되면 M..

SpringFramework/XML 2020.09.01

커넥션풀 [ Spring-JDBC ] DriverManagerDataSource / JdbcTemplate , SqlSessionTemplate , MapperInterface 빈 등록 및 의존성 주입 / root-context.xml

Spring-JDBC root-context.xml에 다음 코드를등록합니다. 천천히 코드를 살펴보며 각각의 기능과 의존성관계를 설명하겠습니다. Spring-Jdbc 공통 빈 등록 [ DriverManagerDataSource ] ◎DriverManagerDataSource를 dataSource라는 bean id로 스프링 컨테이너에 빈등록합니다. DriverManagerDataSource의 각 필드에 setter()로 속성값을 주입합니다. DriverManagerDataSource의 dataSource 빈은 기본적으로 DataBase의 정보를 담아주는 그릇 역할을 합니다. sqlSessionFactory가 dataSource에 의존성을 갖게 되는데, 만약 필드에 값이 없다면 의존성이 주입을 하더라도 빈 객..

SpringFramework/XML 2020.09.01

My SQL 설치 및 환경설정 - (정리예정)

MySQL 큰회사가 아니라면 오라클을 쓸 일이 업습니다 개인개발이나 스타트업 소규모회사에서는 마리아DB라는것을 사용합니다. MySQL은 마리아DB의 부모같은 존재입니다. 둘은 똑같다고 보시면 됩니다. 주소창에 mysql.com 을 입력하고 Downloads - 클릭 Community Edition 개인 무료버전을 다운받습니다 - 클릭 중간쯤에 MySql on Windows - 클릭 MySQL Installer 클릭 후 다운로드 installer실행 - I accept the license terms 체크박스 체크 - Next Custom - Next 1. MySQL Servers - MySQL Server - MySQL Server8.0 - MySQL Server8.0.11 x64 8버전 확인 후 추가 ..

DataBase/My SQL 2020.09.01

컨트롤러의 GET/POST Mapping 메서드에 등록된 uri가 같다면 Form action uri생략 가능 (시작과 끝이 같음) , 핸들러매핑으로 인한 동일한 uri간의 파라미터의 상태유지와 파라미터값 공유

우리가 Get매핑방식과 Post매핑방식의 uri가 같은 uri로 지정되있을때 get방식은 해당 뷰페이지를 출력시켜주며 Post방식은 출력된 뷰페이지로부터 전송을받습니다 뷰페이지의 form에서 action을 생략해도 알아서 찾아갑니다 뷰페이지의 action url이 컨트롤러의 GET uri와 POST uri가 똑같으면 안써도됩니다. action uri를 적지 않아도 form으로 요청을 발생시켜주는 페이지의 uri와 form으로부터 요청이 들어오는 uri가 같을때 뷰페이지로(화면)부터 요청이 들어오는 컨트롤러의 메서드 전송방식를 POST로 지정을 해놨다면 자동으로 POST방식의 해당 메서드로 잡혀 전송이됩니다. uri가 동일하면서, GET과 POST로 나눠져 있다면 HandlerMapping의 uri정보수집..

스프링의 redirect 와 RedirectAttribute

redirect: 뷰리졸버에 보내는 방식은 기본적으로는 forwarding 처리가 되있습니다. 가끔 때로는 redirect처리를 해야할 때가 있습니다. 예를들어 글쓰기 요청이 끝난 후에 바로 글목록 페이지가 떠야합니다. 바로 글목록페이지로 연결 해버리면 글목록을 띄우기위해서는 다시한번 DB에 접근해야합니다. select문을 돌린 후 insert된 게시물목록을 포함한 새롭게 목록이 갱신된 게시물목록을 가져와야합닌다. 그렇다면 요청을 두번보내야 한다는것입니다. 첫번째 요청은 insert 요청으로 게시물을 추가하는 처리를 해야하는 메서드 이후에 두번째 요청은 select 요청으로 insert요청으로 추가한 게시글을 포함한 새로운 목록을 갱신하여 가져오도록 처리하는 메서드로 요청을 한번 더 보내주는 것 입니다...

페이지출력, 페이지전환 및 특정 url로 재 요청 을 해주는 RequestDispatcher 의 request.getRequestDispatcher()/forward() / HttpServletResponse의 response.sendRedirect()

# RequestDispatcher서블릿 forward(request, response)메서드 먼저 forward()와 sendRedirect의 개념차이를 아주 쉽게 구분하겠습니다. forward() : 페이지 출력, 페이지 전환 sendRedirect() : 특정 url로 재 요청 # RequestDispatcher서블릿의 forward(request, response)메서드의 특징) RequestDispatcher객체는 다른 페이지로 이동하는forward() 또는 include() 메소드를 가지고 있는 객체입니다. (이때 다른 페이지로 이동한다는 것은 다른 뷰페이지 파일을 출력 해주는것 입니다) RequestDispatcher객체는 new연산자로 생성하는 것이 아니라, 메소드를 이용해서 생성해야 하는..

JSP&Servlet/BASIC 2020.08.30

Controller에서 view로 데이터 전송요청 Model / @ModelAttribute/ ModelAndView / redirectAttribute

Controller에서 view로 데이터 전송요청 1. Model 2. @ModelAttribute 3. ModelAndView 4. redirectAttribute - u-it.tistory.com/2 Model 1.Model타입을 메서드의 파라미터로 주입하게 되면 'view'로 전달하는 데이터를 담아서 보낼 수 있습니다. 2.request.setAttribute()와 유사한 역할을 합니다. 3. Http header에 객체를 담아 객체를 통으로 전송시킵니다 ex) 메서드(Model model) ex) addAttribute() @ModelAttribute 커맨드객체를 통해 파라미터를 객체화하여 통으로 받을때 주로 사용합니다. 이때 객체의 이름을 받을때와 보낼때 각각 다르게 구분지어야할 때 사용합니다...

@Component,@Controller @Repository,@Service 의 bean id 설정/ @Component 어노테이션을 상속받은 Component기능의 어노테이션들을 bean 객체화 등록할때의 bean id설정법

@Controller public class Controller3 {} 일반적으로 우리가 Controller 어노테이션을 등록하여 bean등록을 하게되면 등록된 bean id는 해당 클래스의 클래스명 첫글자를 소문자로 변경되어 bean의 id로 등록시켜줍니다. 그렇다면 컨트롤러를 bean으로 등록할때 bean아이디를 임의로 지정해주고 싶을때는 어떻게할까요 이때는 @Controller 어노테이션 옆에 ("지정할 bean id명") 매개값으로 지정할 bean id명을 선언하합니다. @Controller("c3") public class Controller3 {} @Repository와 @Service로 등록할 빈에대한 id명도 똑같이 지정할 수 있습니다. 그렇다면 언제 이런걸 사용하게되냐 ? 앞서 우리가 자..

폼태그의 요청 경로설정(절대경로) / JSTL 문법과 EL표현식을 활용한 ContextPath Root(절대경로) 참조법

form태그에서 action 속성에 지정할 경로로는 주로 절대경로로 작성해줘야 합니다. 절대경로는 ContextPath Root부터 기입합니다. ContextPath + URL매핑주소(uri주소) 하지만 ContextPath Root는 언제든지 바뀔 수 있습니다. 우리가 지금 contextPath Root를 /web이라고 해주는데 나중에 바뀌면 어떡하지? 그럼 그럴때마다 절대경로를 선언했던 곳을 전부 다 고쳐야합니다. 이때 우리는 변수를 사용해서 변수에 path경로를 담아주고 미리 변수로만 선언해준다면 path경로를 바꿔도 참조를 하기때문에 변수로 선언된 모든영역은 수정할 필요가 없게됩니다. # 1 첫번째 방법으로는 EL 표현식 $()을 사용하여 불러오는 방법이 있습니다. 먼저 JSTL CoreTagLi..

JSP&Servlet 2020.08.29