본문 바로가기
반응형

BackEnd/Spring50

[Spring] form태그 하나로 등록, 수정 함께 컨트롤하기 태그에서 th:action="URL경로"를 지정하지 않은 경우- 의 th:action 속성값은 주소창의 URL 경로가 된다.💡 예시1. html 제목 내용 등록하기 2. Controller1) 새 게시글 등록등록화면 요청 : GET방식, /post/create등록 요청 : POST방식 @PreAuthorize("isAuthenticated()") // 로그인하지 않은 상태에서 url로 진입 시, 로그인폼으로 이동 @GetMapping("/create") public String form(Model model) { // 등록 오류났을 때 입력해놨던 값 다시 보여주기 위해 입력된 값을 담아놓을 폼 생성 model.addAttribute("postForm", new Po.. 2025. 1. 19.
[Spring JPA] Spring Data JPA의 페이징 처리 Spring Data JPA의 페이징 처리Spring Data JPA의 페이징 처리를 사용하면 별도의 페이징 처리를 구현할 필요가 없다.📌 주요 객체주요 객체는 Model에 담겨서 전달된다.1. Page페이징 조회 결과를 표현하는 인터페이스주요 메소드1) int getTotalPages()총 페이지 갯수 반환2) int getTotalElements()총 데이터 갯수 반환3) int getNumber()현재 페이지번호 반환4) int getSize()페이지당 데이터 갯수 반환5) int getNumberOfElements() 6) List getContent()현재 페이지의 데이터(조회결과) 반환7) boolean hasContent()현재 페이지에서 조회한 데이터가 있을 경우 true 반환8) boo.. 2025. 1. 19.
[Spring] Thymeleaf로 데이터를 출력하는 법, 표현식 유틸리티 객체 💡 사용예시1. Controller화면으로 이동할 때는 기본적으로 Model이 있음@Controller@RequestMapping("/post")@RequiredArgsConstructorpublic class PostController { private final PostService postService; @GetMapping("/list") public String list(Model model) { List posts = postService.getPosts(); model.addAttribute("posts", posts); return "post/list"; // "src/main/resources/templates/post/list.html"로 내부이동 }}2. html 사용데.. 2025. 1. 18.
[Spring] Spring Data JPA 설정 - 정의한 JPA Entity 클래스로 테이블 자동 생성되도록 설정하기 📌 application.properties 설정spring.jpa.hibernate.ddl-auto=updatespring.jpa.properties.hibernate.format_sql=truespring.jpa.show-sql=true1. spring.jpa.hibernate.ddl-auto=updateSQL의 DDL 기능 - update: 변경분만 반영 (개발환경에서만 사용할 것)만약 테이블을 Developer에서 SQL로 따로 생성해두고, JPA를 사용하고 싶다면 해당 설정을 추가하지 않으면 된다.2. spring.jpa.properties.hibernate.format_sql=true스프링 부트가 실행되면서 사용하는 SQL들의 포맷팅, true인 경우 줄바꿈 처리가 되기 때문에 좀 더 알아보.. 2025. 1. 18.
[Spring] Spring Data JPA 연관관계 어노테이션 @ManyToOne 📌 @ManyToOneN:1(다대일) 연관관계를 표현하는 어노테이션@ManyToOne 어노테이션이 붙어있는 엔티티가 N이고, 반대 엔티티가 1이다.가장 많이 사용되는 연관관계 표현 어노테이션예시)Post 엔티티가 N이고, User 엔티티가 1@Entity@Table(name = "board_posts")@SequenceGenerator( name = "post_pk_generator", sequenceName = "board_posts_seq", initialValue = 1000, allocationSize = 1)@Getter@Setterpublic class Post { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "po.. 2025. 1. 18.
[Spring] Optional 처리 ❓ OptionalJava8에 새로 추가된 API프로그램 실행과정에서 발생하는 NullPointerException을 피하기 위한 APInull이 올 수 있는 값을 감싸는 Wrapper 클래스프로그램의 실행결과로 Optional를 반환하면 언제나 null이 아닌 객체를 반환할 수 있어서 NullPointerException을 피할 수 있다.Optional는 클래스이기 때문에 다양한 메소드를 제공한다.💡 예시// 값이 null인 Optional 객체 생성하기Optional optional = Optional.empty();boolean present = optional.isPresent(); // present : falseboolean empty = optional.isEmpty(); // empty.. 2025. 1. 18.