728x90
반응형

SpringFramework 64

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

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

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

컨트롤러의 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요청으로 추가한 게시글을 포함한 새로운 목록을 갱신하여 가져오도록 처리하는 메서드로 요청을 한번 더 보내주는 것 입니다...

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명도 똑같이 지정할 수 있습니다. 그렇다면 언제 이런걸 사용하게되냐 ? 앞서 우리가 자..

스프링의 어노테이션의 특징과 컨트롤러의 공통 URL 설정

컨트롤러 클래스를 만들었을 때 클래스 선언된 곳 위에 @Controller라고 선언해줍니다. xml에서 으로 빈 등록을 해주는것을 대신하는 역할을해줍니다. 자동으로 빈 등록을하는 어노테이션은 네가지가 있습니다. @Component, @Controller , @Service , @Repository 우리가 Service클래스 를 만들때는 그것을 xml을이용해서 빈등록을 할 필요가 없이 @Service를 선언해주면 됩니다. DAO일때도 마찬가지로 xml이 아닌 해당 클래스 선언부 위에 @Repository어노테이션을 선언 해 주면 됩니다. 일반적인 클래스에도 이런식으로 bean으로 등록 시켜주도록 식별할수있게 해주는 참조 대상의 어노테이션을 사용하여 빈으로 등록을 할 수 있지만, 일반적인 클래스인데 Serv..

요청 파라미터 처리법 : Sevlet 자바API request.getParameter() 과 SpringAPI 어노테이션 @RequestParam / command객체 생성 방식 + @ModelAttribute

요청파라미터란?(네임파라미터) 클라이언트가 서버로 전송하는 데이터 고객이 뷰페이지에서 입력,선택한 자료들을 넘겨받아 작업하기 위해 먼저 서버로 전송하기 위한 데이터 입니다. 로그인 아이디,패스워드 게시글 글제목, 작성자, 글번호, 글내용 회원가입 이름,생년월일,아이디.비밀번호,이메일,폰번호,주소 자료실 글제목,작성자,글번호,글내용,첨부파일 상품페이지 종류, 수량, 옵션 결제페이지 배송지정보(받는분 성함, 핸드폰번호, 주소록, 배송메시지) 이런 데이터들을 담는 변수가 요청 파라미터변수 입니다. get방식같은경우엔 주소창에 노출됩니다 ?변수=값 post방식은 request Body request객체의 안쪽에 숨어서 서버로 들어가는겁니다. (request객체에 Body본문 내용을 심어서 보냅니다) 서버는 전송..

MVC Model1,2 및 웹 Spring의 구동 원리

MVC(Model-View-Controller)패턴이란? 전통적인 GUI(Graphic User interface) 기반의 애플리케이션을 구현하기 위한 디자인 패턴입니다. MVC 구조는 사용자의 입력을 받아서 입력 에 대한 처리를 하고, 그 결과를 다시 사용자에게 표시하기 위한 최적화된 설계를 제시해 줍니다. 웹 애플리케이션에는 서블릿/JSP와 함께 일반 자바 클래스도 같이 사용합니다. 가장 이상적인 구조 자바 클래스 – 데이터베이스와 통신/주요 비즈니스 로직 구현 - 비즈니스 로직, 주로 데이터베이스와 통신하는 DAO(Data Access Object)가 존재 서블릿 – 사용자의 요청 처리/제어 컨트롤러 구현 - 컨트롤러, 사용자로부터 요청된 데이터를 검증하고 모델을 호출한 후 뷰에 데이터를 보내 응답..

자동 스캔 명령태그 / 자동 의존성 주입 어노테이션 context:annotation-config @Autowired/@Qulifier/@Resource/@Inject

의존 객체 자동 주입이란? 먼저 재밌고 쉽게 이야기로 비유해보자면 호텔이 레스토랑이 필요하며 의존성관계를 가지고있습니다. 레스토랑은 세프가 필요하고 둘은 또 의존성관계를 가지고 있습니다. 실제로 이것에 대한 주입 명령을 xml설정파일에서 하고있습니다. constructor-arg와 property를 사용하여 xml 설정 파일에서 컨테이너로 직접 주입명령을 등록 하고 있습니다. 레스토랑은 세프가 필요하니까 세터로 이렇~게 주입하면된다. 라고 설정을 기록하고 있지만, 우리가 자동주입이라는 기능을 사용하게 되면 bean 등록만 하면 됩니다. 호텔하나 등록해놓고 레스토랑,세프를 단순하게 '등록만'합니다. "야 컨테이너에 호텔,세프,레스토랑 있거든? 너 딱보면 몰라? 호텔에 레스토랑 필요한거? 레스토랑에 세프 필..