'2017/06/19'에 해당되는 글 3건

  1. 2017.06.19 DAO(Data Access Object) 패턴
  2. 2017.06.19 다형성(Polymorphism)
  3. 2017.06.19 21. isIPv4Address 1
백엔드 언어2017. 6. 19. 22:00

DAO 패턴은 표준 J2EE 디자인 패턴 중 하나로써 다음과 같은 요소들이 있다.

1. 자바빈즈 (DTO) - Department
2. DAO 인터페이스 - DepartmentDao
3. DAO 인터페이스를 구현하는 클래스 - DepartmentDaoImpl
4. 데이터 전송 객체

이 패턴을 사용하면 저 수준의 데이터 엑세스와 고급 비즈니스 로직을 분리할 수 있다.

DAO 패턴 작성 과정
1. 처리할 데이터가 저장되기 위한 데이터베이스 테이블의 구조를 JavaBeans 로 표현한다.
2. 데이터의 입력, 수정, 삭제, 조회 (다중조회) 의 기능을 명시한 Interface를 정의한다.
3. Interface를 상속받는 구현체를 작성하고 메서드들을 오버라이딩 한다.
4. 재정의 된 메서드의 기능을 구현한다.



상세 과정


1. 자바빈즈 만들기
-> 자바빈즈의 필드와 메소드 (getter, setter) 그리고 객체의 값을 표시하기 위한 toString() 메소드를 만든다.

2. 인터페이스 DAO 만들기
-> DAO가 구현해야 하는 기능을 정의한다.
-> Insert, update, delete, select, selectAll 등

3. DAO 인터페이스를 상속받아서 구현체를 만든다.
-> 데이터베이스 접속객체를 만들고 생성자를 통해서 데이터 베이스 접속객체를 전달받는다.
-> DAO에서 정의된 메소드들을 각 기능에 맞게 오버라이딩 한다.
-> 조회기능
--> (한개의 데이터) SELECT 문을 실행하고 결과값을 빈즈객체로 만들어 리턴한다.
--> (다수의 데이터) SELECT 문의 결과값을 반복문을 이용하여 전부 객체로 만든 후 컬렉션 프레임워크의 ArrayList에 담아 리턴한다.

4. DAO를 사용하는 프로그램을 만든다.
-> ex) Department model = new Department(1, '자원관리부', '3층'); // INSERT를 수행할 데이터 생성
-> ex) DepartmentDao dao = new DepartmentImpl(conn); // 다형성을 통하여 동작을 지정한다.
-> ex) int result = dao.insert(model); // 데이터를 저장한다.
-> ex) 데이터 저장 완료.

'백엔드 언어' 카테고리의 다른 글

홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
JSP DB연동 테스트  (0) 2017.06.20
다형성(Polymorphism)  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
Posted by EL2A
백엔드 언어2017. 6. 19. 21:59

다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 키보드의 키를 통하여 비유를 든다면 키보드의 키의 동작방법은 '누른다' 이다. 하지만 똑같은 동작 방법의 키라고 하더라도 ESC는 취소를 ENTER는 실행의 목적을 가지고 있다. 다형성이란 동일한 조작방법으로 동작시키지만 동작을 다르게 하는 것이다.




class A{}

class B extends A{}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

}

}


위의 코드는 A형태의 객체 obj를 만들고 이 객체의 동작은 B로 하는것이다.



class A{

public String x(){return "x";}

}

class B extends A{

public String y(){return "y";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

obj.x();

obj.y();

}

}


위의 코드에서 obj.x();는 실행이 되지만 obj.y();는 실행이 되지 않는다.

클래스 A에 x()라는 메소드가 없기 때문이다.


즉 클래스 B의 데이터 형을 클래스 A로 하면 클래스 B는 마치 클래스 A인것처럼 동작하게 되는 것이다. 클래스 B를 사용하는 입장에서는 클래스 B를 클래스 A인것처럼 사용하면 된다.


class A{

public String x(){return "A.x";}

}

class B extends A{

public String x(){return "B.x";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

System.out.println(obj.x());

}

}


위의 코드의 결과는 'B.x' 이다.

A의 동작은 "A.x" 이지만 B클래스에 정의된 메소드 x()가 실행된다.


class A{

public String x(){return "A.x";}

}

class B extends A{

public String x(){return "B.x";}

}

class B2 extends A{

public String x(){return "B2.x";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

A obj2 = new B2();

System.out.println(obj.x()); // 출력결과 B.x

System.out.println(obj2.x()); // 출력결과 B2.x

}

}


다형성을 통하여 동작방법은 똑같지만 동작을 다르게 설정할 수 있다.

그리고 다른 동작의 클래스는 new B(); 또는 new B2(); 이부분에 있다.

'백엔드 언어' 카테고리의 다른 글

JSP DB연동 테스트  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
JSTL 사용법  (0) 2017.03.24
Posted by EL2A
알고리즘(CF)2017. 6. 19. 21:54

An IP address is a numerical label assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication. There are two versions of the Internet protocol, and thus two versions of addresses. One of them is the IPv4 address.

IPv4 addresses are represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots, e.g., 172.16.254.1.

Given a string, find out if it satisfies the IPv4 address naming rules.




Example


  • For inputString = "172.16.254.1", the output should be
    isIPv4Address(inputString) = true;

  • For inputString = "172.316.254.1", the output should be
    isIPv4Address(inputString) = false.

    316 is not in range [0, 255].

  • For inputString = ".254.255.0", the output should be
    isIPv4Address(inputString) = false.

    There is no first number.





Code


function isIPv4Address(inputString) {

   

}

'알고리즘(CF)' 카테고리의 다른 글

22. avoidObstacles  (1) 2017.06.20
20. arrayMaximalAdjacentDifference  (1) 2017.06.18
19. areEquallyStrong  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
Posted by EL2A