달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'분류 전체보기'에 해당되는 글 13

  1. 2018.06.30 집계함수 vs 분석함수
  2. 2018.06.30 ERD
  3. 2017.12.08 Java8 의 특징 1
2018. 6. 30. 23:34

집계함수 vs 분석함수 SQL2018. 6. 30. 23:34

집계함수 vs 분석함수
  • - 집계함수는 그룹별 최대, 최소, 합계, 평균, 건수 등을 구할 때 사용되며, 그룹별 1개의 행을 반환한다.
  • - 분석함수는 그룹단위로 값을 계산한다는 점에서 집계함수와 유사하지만, 그룹마다가 아니라 결과Set의 
  •   각 행마다 집계결과를 보여준다는 점에서 집계함수와 상당한 차이가 있다.
  •  
  • - 분석함수는 쉽게 생각해서, 그룹별 계산결과를 각 행마다 보여주는 것이다.

 

:
Posted by Habba
2018. 6. 30. 22:13

ERD Modeling2018. 6. 30. 22:13

부모 엔티티로부터 상속받은 모든 속성이 자식 엔티티의 유니크 식별자로 선정되는 것은 아니다. 

경우에 따라 부모로부터 상속받은 속성을 유니크 식별자로 선정하지 않고 일반 속성으로 

선정하기도 한다.


이런 경우 부모로부터 상속받은 속성은 외부키(Foreign Key)로 설정된다. 

이는 물리 모델에서 외부키로 설정돼야 한다. 


하지만 실제 물리 모델링에서는 외부키를 설정하지 않는 경우가 대부분이다. 

결국 논리 모델에서만 이렇게 표현하는 경우가 많다.

'Modeling' 카테고리의 다른 글

[UML] Sequence Diagram  (0) 2018.11.10
:
Posted by Habba
2017. 12. 8. 21:16

Java8 의 특징 Java2017. 12. 8. 21:16

Lambda expressions

  • 람다 표현식은 Anonymous Function라고 할 수 있다
  • 람다를 이용하여 코드를 간결하게 할 수 있다

Example

  1. // Before
  2. Runnable oldRunner = new Runnable(){
  3. public void run(){
  4. System.out.println("I am running");
  5. }
  6. };
  7.  
  8. // After
  9. Runnable java8Runner = () -> {
  10. System.out.println("I am running");
  11. };

Method Reference

  • 특정 람다 표현식을 축약한 것으로 볼 수 있다
  • 메서드 정의를 활용하여 람다처럼 사용 가능하다

Example

  1. // Before
  2. inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));
  3.  
  4. // After
  5. inventory.sort(comparing(Apple::getWeight));
  6.  
  7. /*
  8. Lamda -> Method Reference
  9. (Apple a) -> a.getWeight Apple::getWeight
  10. () -> Thread.currentThread().dumpStack() Thread.currentThread()::dumpStack
  11. */

Stream

  • 간결하게 컬렉션의 데이터를 처리하는 기능

Example

  1. // Before
  2. List<Shape> list = new ArrayList<Shape>();
  3. for (Shape s : shapes) {
  4. if (s.getColor() == RED) {
  5. list.add(s);
  6. }
  7. }
  8.  
  9. // After
  10. shapes.stream().filter(s -> s.getColor() == Red).collect(toList());

Parallel Stream

  • 위 Stream을 병렬로 처리가능하도록 하는 기능
  • 여러 쓰레드에서 처리할 수 있도록 분할한 Stream 이다

Example

  1. shapes.parallelStream().forEach(s -> doSomething());

Default Method

  • 인터페이스의 구현체를 인터페이스 자체에서 기본으로 제공 가능하다
  • 구현 클래스에서 인터페이스를 구현하지 않아도 된다

Example

  1. public interface Sized {
  2. int size();
  3.  
  4. default boolean isEmpty() { // Default Method
  5. return size() == 0;
  6. }
  7. }

Optional

  • 값을 Optional<T>로 캡슐화하여 NullPointerException을 막는다
  • 값이 존재한다면 Optional 클래스는 값을 감싼다
  • 값이 없다면 Optional.empty메서드로 Optional을 리턴한다

CompletaleFuture

  • Future의 기능을 확장시켜준다
    • 두 개의 비동기 계산 결과를 하나로 합친다
      • 각 계산 결과는 독립적이거나 종속적일 수 있다
    • Future 집합이 실행하는 모든 태스크의 완료를 기다린다
    • Future 집합에서 가장 빨리 완료되는 태스크를 기다렸다가 결과를 얻는다
    • Future가 완료되면 추가 작업을 수행 할 수 있다

New date / time APIs

  • Joda-Time의 많은 기능을 java.time 패키지로 추가했다
    • LocalDate, LocalTime, Instant, Duration, Period …


:
Posted by Habba