본문 바로가기
반응형

BackEnd83

[Spirng JPA] 단방향/양방향 연관관계 💡 연관관계의 주인외래키를 만들어서 값을 갖고 있는 테이블이 주인1. 단방향 연관관계실제로 연관관계의 주인인 테이블에만 연관관계를 설정(@ManyToOne)2. 양방향 연관관계 매핑두 객체가 서로 참조해야 하는 상황에서 정의하는 연관관계 매핑 방식데이터베이스에서 테이블 간의 관계는 단방향 매핑이 존재한다.양방향 연관관계 매핑을 할 때는 반드시 한쪽의 객체에 mappedBy 옵션을 설정해야 한다.객체입장에서는 참조 관계가 양방향이 되었으나, 데이터베이스 입장에서는 자식 테이블의 외래키만으로 관계설정이 충분하기 때문에, 추가적인 설정이 필요하다.mappedBy 옵션은 자신이 이 연관관계의 주인이 아님을 설정하는 것이다.mappedBy 옵션에서는 반대쪽에 자신이 매핑되어 있는 필드명을 적으면 된다.연관관계의.. 2025. 1. 19.
[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.