application.properties에서 yml로 바꿔준다
그리고 h2db로 변경해준다.
왜냐하면 굳이 db를 설치하고 할 필요가 없기 때문이다.
# yml이랑 같다
spring:
thymeleaf:
cache: false
datasource:
url: jdbc:h2:mem:farmerstory
driverClassName: org.h2.Driver
username: root
password: 1234
jpa:
defer-datasource-initialization: true
open-in-view: false # 트랜잭션 범위 밖에서 영속성 컨텍스트를 유지할지 여부
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: none # create-drop, update, validate, none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
show-sql: true
properties:
hibernate:
format_sql: true
servlet:
multipart:
max-request-size: 10MB
max-file-size: 10MB
폴더구조를 요렇게 만든다.

로그인과 회원가입을 뿌려줄 controller다.
package com.example.farmerstroy.domain.auth.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class AuthController {
@GetMapping("/join")
public String joinPage() {
return "join";
}
@GetMapping("login")
public String loginPage(){
return "login";
}
}
실행했는데 캡쳐는 못했지만 css와 이미지 경로가 잘못되어 있었다..
bin안에서 경로를 확인해서 해야하는데 src로 경로를 설정해버렸다ㅠ
/폴더/파일로 모든 경로들을 수정해준다.
예시<link rel="stylesheet" href="/css/login.css">


main페이지 화면 뿌려준다.
package com.example.farmerstroy.domain.main.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/main")
public String mainPage(){
return "main";
}
}

엔티티를 만들어본다.
만들기 전에 이미지들은 다 longtext타입으로 변경해준다.
일단 테이블은 보고 만들어준다..
(폴인키는 후에 해보겠어..)
package com.example.farmerstroy.model.category.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "category")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class CategoryEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "name", nullable = false)
private String name;
}
package com.example.farmerstroy.model.comment.entity;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "comment")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class CommentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "create_date", nullable = false)
private LocalDateTime createDate;
@Column(name = "user_idx", nullable = false)
private Long userIdx;
@Column(name = "community_idx", nullable = false)
private Long communityIdx;
}
package com.example.farmerstroy.model.community.entity;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "community")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class CommunityEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "title")
private String title;
@Column(name = "content")
private String content;
@Column(name = "create_date")
private LocalDateTime createDate;
@Column(name = "user_idx")
private Long userIdx;
}
package com.example.farmerstroy.model.diary.entity;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "diary")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class DiaryEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "create_date", nullable = false)
private LocalDateTime createDate;
@Column(name = "user_idx")
private Long userIdx;
}
package com.example.farmerstroy.model.review.entity;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "review")
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class ReviewEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "content", nullable = false)
private String content;
@Column(name = "create_date", nullable = false)
private LocalDateTime createDate;
@Column(name = "user_idx", nullable = false)
private Long userIdx;
@Column(name = "sale_idx", nullable = false)
private Long saleIdx;
}
package com.example.farmerstroy.model.sale.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "sale")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class SaleEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx", nullable = false, unique = true)
private Long idx;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "introduction", nullable = false)
private String introduction;
@Column(name = "price")
private Integer price;
@Column(name = "image")
private String image;
@Column(name = "user_idx")
private Long userIdx;
@Column(name = "category_idx")
private Long categoryIdx;
}
package com.example.farmerstroy.model.user.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Entity
@Table(name = "`user`")
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class UserEntity {
@Id
@Column(name = "idx", nullable = false, unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;
@Column(name = "nickname", nullable = false)
private String nickname;
@Column(name = "id", nullable = false)
private String id;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "email", nullable = false)
private String email;
@Column(name = "profile")
private String profile;
@Column(name = "authority", nullable = false)
private String authority;
}
휴..만들었다..폴인키를 설정해본다^^
DiaryEntity에서 userIdx컬럼을 변경해준다
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private UserEntity userEntity;
그럼 UserEntity로 가서 DiaryEntity에서 만든 userEntity를 가져와서 붙여준다.
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<DiaryEntity> diaryEntityList;
그러면 끝!!
나머지 엔티티도 해준다.
코드를 올려본다.
@OneToMany(mappedBy = "categoryEntity")
private List<SaleEntity> saleEntityList;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private UserEntity userEntity;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "community_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private CommunityEntity communityEntity;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private UserEntity userEntity;
@OneToMany(mappedBy = "communityEntity")
private List<CommentEntity> commentEntityList;
아까 위에서 해줌!!
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private UserEntity userEntity;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sale_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private SaleEntity saleEntity;
@ManyToAny(fetch = FetchType.LAZY)
@JoinColumn(name = "user_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private UserEntity userEntity;
@ManyToAny(fetch = FetchType.LAZY)
@JoinColumn(name = "category_idx", referencedColumnName = "idx", updatable = false, nullable = false)
private CategoryEntity categoryEntity;
@OneToMany(mappedBy = "saleEntity", fetch = FetchType.LAZY)
private List<ReviewEntity> reviewEntityList;
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<DiaryEntity> diaryEntityList;
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<CommentEntity> commentEntityList;
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<CommunityEntity> communityEntityList;
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<ReviewEntity> reviewEntityList;
@OneToMany(mappedBy = "userEntity", fetch = FetchType.LAZY)
private List<SaleEntity> saleEntityList;
완성!!!
하면서 또 수정할 수도 있다...ㅠ