2025/02/08: 3개의 글

[Excel] 엑셀을 사용한 조 편성 방법

Posted by nkjok
2025. 2. 8. 16:41 OS&기타/Excel-엑셀
반응형

엑셀을 사용한 조 편성 방법

  1. 직원 목록 작성
    • A열에 1번부터 12번까지의 직원 이름을 작성합니다.
  2. 조 편성
    • B열부터 M열까지 12개의 열을 사용하여 각 주의 조 편성을 기록합니다. 각 열은 한 주를 나타냅니다.
    • 첫 번째 주에 모든 가능한 조합을 작성합니다. 예를 들어, 1주차에는 다음과 같이 조를 편성할 수 있습니다:
    •  
      A | B
      ---
      1 | 2
      3 | 4
      5 | 6
      7 | 8
      9 | 10
      11 | 12
      
  3. 조 편성 규칙
    • 각 주마다 조를 재편성합니다. 같은 조가 중복되지 않도록 합니다.
    • 엑셀의 조합 함수를 사용하거나, 수동으로 조를 편성할 수 있습니다.
  4. 조건 검토
    • 모든 조가 11주 혹은 12주 동안 중복되지 않는지 확인합니다.
    • 필요한 경우, 조건을 만족하지 않는 조합을 변경합니다.

예시

다음은 엑셀에서 조 편성을 위한 예시입니다:

주차조1조2조3조4조5조6
1주 1-2 3-4 5-6 7-8 9-10 11-12
2주 1-3 2-4 5-7 6-8 9-11 10-12
3주 1-4 2-5 3-6 7-9 8-10 11-12
... ... ... ... ... ... ...
11주 ... ... ... ... ... ...

이와 같이 각 주차마다 직원 조합을 달리하여 겹치지 않도록 조 편성을 할 수 있습니다. 엑셀의 수식과 매크로를 사용하면 더 효율적으로 작업할 수 있습니다.

반응형

[SpringBoot] JpaRepository save, findAll, findById, delete 기능

Posted by nkjok
2025. 2. 8. 16:21 낙서장[1]/2. SpringBoot
반응형

JpaRepository 주요 기능

1. save

개념

  • 객체를 데이터베이스에 저장하거나, 이미 존재하는 엔티티 객체를 업데이트하는 데 사용됩니다.

용도

  • 새로운 엔티티를 데이터베이스에 등록할 때
  • 이미 존재하는 엔티티를 수정할 때

사용 방법

java
@PostMapping("/posts")
public Post createOrUpdatePost(@RequestBody Post post) {
    return postRepository.save(post);
}

2. findAll

개념

  • 데이터베이스에 저장된 모든 엔티티 객체를 조회합니다.

용도

  • 데이터베이스에 있는 모든 레코드를 가져올 때

사용 방법

java
@GetMapping("/posts")
public List<Post> getAllPosts() {
    return postRepository.findAll();
}

3. findById

개념

  • 주어진 ID로 데이터베이스에서 특정 엔티티 객체를 조회합니다.

용도

  • 특정 레코드를 ID로 조회할 때

사용 방법

java
@GetMapping("/posts/{id}")
public ResponseEntity<Post> getPostById(@PathVariable Long id) {
    Optional<Post> post = postRepository.findById(id);
    return post.map(ResponseEntity::ok)
               .orElseGet(() -> ResponseEntity.notFound().build());
}

4. delete

개념

  • 주어진 ID로 데이터베이스에서 특정 엔티티 객체를 삭제합니다.

용도

  • 특정 레코드를 삭제할 때

사용 방법

java
@DeleteMapping("/posts/{id}")
public ResponseEntity<Void> deletePost(@PathVariable Long id) {
    postRepository.deleteById(id);
    return ResponseEntity.noContent().build();
}

요약

  • save: 엔티티 객체를 저장하거나 업데이트
  • findAll: 모든 엔티티 객체를 조회
  • findById: 특정 ID로 엔티티 객체를 조회
  • delete: 특정 ID로 엔티티 객체를 삭제

JpaRepository는 위의 4가지 주요 기능을 자동으로 구현해주므로, 별도의 쿼리 작성 없이도 쉽게 사용할 수 있습니다.

반응형

[JPA] JPQL & QueryDSL 개념, 용도, 사용방법

Posted by nkjok
2025. 2. 8. 16:12 낙서장[1]/3. JPA
반응형

JPQL (Java Persistence Query Language)

개념

JPQL은 Java Persistence API (JPA)를 사용하여 데이터베이스에서 객체를 조회하기 위한 쿼리 언어입니다. SQL과 유사하지만, JPQL은 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 작동합니다. 따라서 객체 지향적인 방식으로 데이터베이스 쿼리를 작성할 수 있습니다.

용도

  • 엔티티 객체를 조회할 때 사용
  • 복잡한 쿼리를 작성할 수 있지만, 쿼리 문자열이 고정되어 있어 동적 쿼리를 작성하는 데 제한적

사용 방법

java
// JPQL 예시
@Query("SELECT p FROM Post AS p WHERE p.title LIKE %:title% ")
List<Post> findAllByTitle(@Param("title") String titleStr);

QueryDSL

개념

QueryDSL은 JPA의 동적 쿼리 생성을 쉽게 하기 위한 도구입니다. 쿼리 타입을 제공하여 자바 코드 내에서 타입 안정성이 보장되는 쿼리를 작성할 수 있습니다. 동적 쿼리를 작성하기에 적합합니다.

용도

  • 동적 쿼리 작성에 적합
  • 컴파일 시점에 타입 체크가 가능하여 안전한 쿼리 작성 가능

사용 방법

java
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.beans.factory.annotation.Autowired;

public class PostRepositoryCustomImpl implements PostRepositoryCustom {

    @Autowired
    private JPAQueryFactory queryFactory;

    @Override
    public List<Post> findAllByTitle(String titleStr) {
        QPost post = QPost.post;
        return queryFactory.selectFrom(post)
                .where(titleContains(titleStr))
                .fetch();
    }

    private BooleanExpression titleContains(String titleStr) {
        if (titleStr == null || titleStr.isEmpty()) {
            return null;
        }
        return QPost.post.title.containsIgnoreCase(titleStr);
    }
}

요약

  • JPQL: 정적 쿼리에 적합, SQL과 유사하지만 객체 지향적인 방식
  • QueryDSL: 동적 쿼리에 적합, 타입 안전성 보장

 

반응형