본문 바로가기
728x90

Java41

Spring #5 : 마이바티스 - 동적 SQL문(230118) 마이바티스 동적 SQL문 - 주로 SQL문의 조건절에서 사용 - 조건절(WHERE절)에 조건을 동적으로 추가 - JSTL과 XML 기반으로 동적 SQL문 작성 if choose(when, otherwise) trim(where, set) foreach 추가구문 name=#{name} and email=#{email} name=#{name} email=#{email} order by joinDate desc where name in #{item} order by joinDate desc insert INTO t_member(id, pwd, name, email) VALUES (#{item.id}, #{item.pwd}, #{item.name}, #{item.email}) 2023. 1. 18.
Spring #4 : 마이바티스 - 회원 최종(230118) SqlMapConfig.xml name=#{name} and email=#{email} name=#{name} email=#{email} order by joinDate desc where name in #{item} order by joinDate desc insert INTO t_member(id, pwd, name, email) VALUES (#{item.id}, #{item.pwd}, #{item.name}, #{item.email}) member.xml package com.spring.ex04; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import .. 2023. 1. 18.
Spring #3 : 마이바티스 프레임워크 - 회원 출력/검색/추가/수정/삭제 (230117) 기존의 JDBC - connection → Statement 객체 생성 → SQL문 전송 → 결과 반환 → close 과정으로 작업 - SQL문이 프로그래밍 코드에 섞여 코드가 복잡 => 사용, 유지 보수가 어려움 ++ 마이바티스 ++ - 마이바티스 프레임워크를 도입 => SQL문의 가독성을 높여서 사용이 편리 - 코드와 SQL문을 분리 -> 사용, 유지 보수가 편리 - SQL 실행 결과를 자바 빈즈 또는 Map 객체에 매핑해 주는 Persisitence 솔루션으로 관리 - SQL을 소스 코드가 아닌 XML로 분리 - SQL문과 프로그래밍 코드를 분리해서 구현 - 데이터소스(DataSource) 기능과 트랜잭션 처리 기능 제공 SqlMapConfig.xml에 각 기능별로 실행할 SQL문을 SqlMap.x.. 2023. 1. 18.
자바 #008_인터페이스 인터페이스(interface) - 객체의 사용 방법을 정의한 타입 - 인터페이스를 통해 다양한 객체를 동일한 사용 방법으로 이용할 수 있음 - 다형성 구현 - 인터페이스의 메소드를 호출하면, 객체의 메소드가 호출된다. - 개발 코드를 수정하지 않고도 객체 교환이 가능!! - ~.java 형태 소스 파일로 작성. 컴파일러를 통해 ~class형태로 컴파일된다. - 클래스와 물리적 파일 형태는 갖지만, 소스 작성 내용이 다르다. [public] interface 인터페이스 이름 { ... } - 인터페이스는 객체로 생성할 수 없다 => 생성자를 가질 수 없다. interface 인터페이스명 { // 상수 타입 상수명 = 값; // 추상 메소드 타입 메소드명(매개변수, ...); } 상수 필드 선언(consta.. 2023. 1. 17.
Spring #2 : 스프링 MVC (230116) 스프링에서의 MVC 기능 - 모델2 아키텍처를 지원 - 스프링과 다른 모듈과의 연계가 용이 - 타일즈(tiles)나 사이트메시(sitemesh) 같은 View 기술과 연계 용이 - 태그 라이브러리를 통해 message 출력, theme 적용, 입력 폼을 쉽게 구현 가능 스프링 프레임워크 MVC 구성 요소 구성요소 description DispatcherServlet 클라이언트의 요청을 전달받아 해당 요청에 대한 컨트롤러를 선택하여 클라이언트의 요청 전달 컨트롤러가 반환한 값을 View에 전달하여 알맞은 응답 생성. HandlerMapping 클라이언트가 요청한 URL을 처리할 컨트롤러를 지정 Controller 클라이언트의 요청을 처리한 후 그 결과를 DispatcherServlet에 전달 ModelAn.. 2023. 1. 17.
자바 #007_상속 OOP(객체 지향 프로그램)에서 부모 클래스의 멤버를 자식 클래스에게 상속해줄 수 있다. 상속 - 재사용 : 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에, 중복코드가 줄어든다. - 유지보수 : 부모클래스를 수정하면, 상속받고 있는 모든 자식 클래스가 수정되므로 유지보수 시간이 줄어든다. 클래스 상속 - 자식 클래스를 선언할 때 뒤에 부모 클래스를 명시 class 자식클래스 extends 부모클래스 { // 필드 // 생성자 // 메소드 } - 부모 클래스는 하나만 정할 수 있다. - 부모클래스의 private 필드와 메소드는 상속받을 수 없다. - 부모와 자식이 다른 package에 존재하면, default 접근 제한자를 가진 필드와 메소드도 상속받을 수 없다. - 자식클래스의 객체를 .. 2023. 1. 16.
Spring : 스프링 AOP (230116)xxx ++ 관점 지향 프로그래밍(Aspect Oriented Programming, AOP) ++ - 주기능과 보조 기능을 분리해서 메서드에 적용 더보기 (출처 : Aspect Oriented Programming(관점지향프로그래밍) 소개 :: Deep Play (tistory.com)) AOP는 절차지향이나 객체지향 프로그래밍처럼 그 자체로 하나의 프로그램을 형성할 수 있는 건 아닙니다. 하지만 AOP는 객체지향 코드 위에서 이루어지며 객체지향을 보조하는 역할을 한다고 보시면 됩니다. 스프링 프레임워크에서 AOP기능 구현 방법 스프링 프레임워크에서 제공하는 API 사용 @Aspect 애너테이션 사용 AOP 용어 용어 description aspect 구현하고자 하는 보조 기능 advice aspect의 실제.. 2023. 1. 16.
Spring #1 : 의존성 주입, 초기 개발환경 설정 (230116) Spring 환경설정하기 File - new - other - Java Project (module은 don't create) 그리고 lib폴더를 만들어서 해당 .jar파일들을 복사-붙여넣기. 오른쪽마우스-properties로 들어간다. 복사한 jar파일들을 Add JARs해서 classpath에 추가해준다. 의존성 - 연관 관계를 개발자가 직접 코딩을 통해 컴포넌트(클래스)에 부여하는 것이 아니라, 컨테이너가 연관 관계를 직접 규정하는 것 - 코드에서 직접적인 연관 관계가 발생하지 않으므로 각 클래스들의 변경이 자유로워진다. (loosely coupled, 약한 결합) - 서로 관련이 있는 기능들은 강하게 결합( tightly coupled)하고, 관련이 없는 기능들은 약하게 결합(loosely cou.. 2023. 1. 16.
JSP #12 : Model2 방식 - 게시판(230111) 첫 번째로, 게시판 리스트업하기 실습 #1 먼저 데이터베이스다. 원래는 이렇게 저장함수로 함수를 생성하는 것이 좋지만, 계속 알 수 없는 오류가 생겨 쿼리문으로 function_hierarchical을 작성하였다. DELIMITER $$ CREATE FUNCTION function_hierarchical() RETURNS INT NOT DETERMINISTIC READS SQL DATA BEGIN DECLARE v_articleNO INT; DECLARE v_parentNO INT; DECLARE CONTINUE HANDLER FOR NOT FOUND SET @articleNO = NULL; SET v_parentNO = @articleNO; SET v_articleNO = -1; IF @articleN.. 2023. 1. 16.
728x90