Ant빌드 프로세스를 XML 기반의 구성 파일로 정의합니다.프로젝트 구조와 의존성 관리가 상대적으로 복잡합니다.사용자 정의 작업을 작성하기 쉽습니다.배포 및 설치 스크립트 작성이 용이합니다.오래된 도구이지만 여전히 많이 사용되고 있습니다.//디렉터리 구조.myproject/├── build.xml├── src/│ └── main/│ └── java/│ └── com/│ └── example/│ └── MyClass.java└── lib/ └── external-library.jar build.xml: Ant 빌드 스크립트 파일src/main/java/: 자바 소스 코드 디렉터리lib/: 외부 라이브러리 디렉터리..
EntityManagerEntityManager는 JPA의 인터페이스로, 엔티티 관리 및 데이터베이스 작업을 처리합니다.엔티티 생성, 조회, 수정, 삭제트랜잭션 관리엔티티 관계 관리JPQL(Java Persistence Query Language) 쿼리 실행import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;// 엔티티 클래스@Entitypublic class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private..
PageablePageable은 Spring Data JPA에서 사용되는 인터페이스로, 페이징 처리를 위한 정보를 제공합니다.이를 통해 데이터베이스에서 전체 데이터를 가져오는 것이 아니라, "페이지 단위"로 데이터를 가져올 수 있습니다.Pageable 인터페이스pageNumber: 현재 페이지 번호 (0부터 시작)pageSize: 한 페이지에 표시할 데이터의 수sort: 정렬 조건import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bin..
Query Parameter는 URL의 일부로 포함되어서 서버에 전달되는 key-value 쌍을 말합니다.@GetMapping("/search")public List searchProducts(@RequestParam(name = "q") String query, @RequestParam(name = "page", defaultValue = "1") int page) { // 검색 쿼리와 페이지 번호를 사용하여 상품 목록 조회 return productService.searchProducts(query, page);} 위 코드에서 @RequestParam을 사용하여 q 쿼리 파라미터와 page 쿼리 파라미터를 받고 있습니다.클라이언트..
invalidate() invalidate() 메서드는 Java의 "HttpSession 클래스"에서 제공되는 메서드입니다. 이 메서드는 현재 세션을 무효화하고, 세션과 관련된 모든 데이터를 삭제합니다.일반적으로 사용자가 로그아웃할 때 세션을 무효화하는 데 사용됩니다. 이를 통해 사용자의 정보가 더 이상 서버에 저장되지 않도록 하여 보안을 강화할 수 있습니다.@Controllerpublic class LogoutController { @GetMapping("/logout") public String logout(HttpServletRequest request) { // 현재 세션 객체 가져오기 HttpSession session = request.getSession(f..
Fri May 31 18:48:32 KST 2024 There was an unexpected error (type=Internal Server Error, status=500).이라는 오류가 발생.detail.html 에서는 board.fileAttached ==1 을 이용한 파일작성의 테이블을 작성해주었는데,org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'fileAttached' cannot be found on object of type Thymeleaf 템플릿에서 해당 DTO에서 필드를 찾을 수가 없다는 오류가 발생. 따라서 fileAttached 필드를 추가하여 동작을 시켜보니 정상적으..
Optional 클래스는 null을 안전하게 처리할 수 있도록 다양한 메서드를 제공합니다. ( NullPointerException을 방지) 1.Get()Optional optionalString = Optional.of("Hello");String value = optionalString.get(); // "Hello" get(): Optional 객체에 저장된 값을 반환합니다. 값이 없는 경우 NoSuchElementException이 발생합니다.2.IsPresent()Optional optionalString = Optional.of("Hello");if (optionalString.isPresent()) { System.out.println(optionalString.get()); // "H..

2024-05-29T19:19:39.525+09:00 ERROR 25080 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed.org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'boardController' defined in file라는 오류가 발생했는데, 해당 오류는 jpa에서 이미 save 메서드를 제공하고 있음에도 불구하고, 내가 따로 정의를 해버려서 중복발생 오류로써 save 메서드를 없애주면서 오류를 해결을 할 수 있었습니다.