From a33577c3a56ddb527a8ffb95d31910584d6fc250 Mon Sep 17 00:00:00 2001 From: seeunjang Date: Wed, 15 Mar 2023 21:28:07 +0900 Subject: [PATCH] =?UTF-8?q?[refactor]=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mediflix/backend/config/BaseTime.java | 22 +++++++++++ .../com/mediflix/backend/dto/MemberDTO.java | 14 +++---- .../com/mediflix/backend/entity/Hashtag.java | 33 ++++++++++++++++ .../entity/{MemberEntity.java => Member.java} | 16 ++++---- .../com/mediflix/backend/entity/Video.java | 39 +++++++++++++++++++ .../backend/repository/MemberRepository.java | 6 +-- .../backend/service/MemberService.java | 22 +++++------ src/main/resources/application-dev.yml | 11 +++++- src/main/resources/sql/member.sql | 11 +++--- 9 files changed, 138 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/mediflix/backend/config/BaseTime.java create mode 100644 src/main/java/com/mediflix/backend/entity/Hashtag.java rename src/main/java/com/mediflix/backend/entity/{MemberEntity.java => Member.java} (72%) create mode 100644 src/main/java/com/mediflix/backend/entity/Video.java diff --git a/src/main/java/com/mediflix/backend/config/BaseTime.java b/src/main/java/com/mediflix/backend/config/BaseTime.java new file mode 100644 index 0000000..36e28ea --- /dev/null +++ b/src/main/java/com/mediflix/backend/config/BaseTime.java @@ -0,0 +1,22 @@ +package com.mediflix.backend.config; + +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import java.time.LocalDateTime; + +@Getter +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public abstract class BaseTime { + + @CreatedDate + protected LocalDateTime createdAt; + + @LastModifiedDate + protected LocalDateTime updatedAt; +} diff --git a/src/main/java/com/mediflix/backend/dto/MemberDTO.java b/src/main/java/com/mediflix/backend/dto/MemberDTO.java index 345663f..fa5acb5 100644 --- a/src/main/java/com/mediflix/backend/dto/MemberDTO.java +++ b/src/main/java/com/mediflix/backend/dto/MemberDTO.java @@ -1,6 +1,6 @@ package com.mediflix.backend.dto; -import com.mediflix.backend.entity.MemberEntity; +import com.mediflix.backend.entity.Member; import lombok.*; @Getter @@ -18,13 +18,13 @@ public class MemberDTO { private String member_major; // 로그인 과정에서 Service에서 entity -> DTO를 위한 함수 - public static MemberDTO toMemberDTO(MemberEntity memberEntity) { + public static MemberDTO toMemberDTO(Member member) { MemberDTO memberDTO = new MemberDTO(); - memberDTO.setMemberId(memberEntity.getMemberId()); - memberDTO.setUserId(memberEntity.getUserId()); - memberDTO.setUserPw(memberEntity.getUserPw()); - memberDTO.setMemberName(memberEntity.getMemberName()); - memberDTO.setMember_major(memberEntity.getMember_major()); + memberDTO.setMemberId(member.getMemberId()); + memberDTO.setUserId(member.getUserId()); + memberDTO.setUserPw(member.getUserPw()); + memberDTO.setMemberName(member.getMemberName()); + memberDTO.setMember_major(member.getMember_major()); return memberDTO; } } \ No newline at end of file diff --git a/src/main/java/com/mediflix/backend/entity/Hashtag.java b/src/main/java/com/mediflix/backend/entity/Hashtag.java new file mode 100644 index 0000000..94fe978 --- /dev/null +++ b/src/main/java/com/mediflix/backend/entity/Hashtag.java @@ -0,0 +1,33 @@ +package com.mediflix.backend.entity; + +import com.mediflix.backend.config.BaseTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Getter +@Table(name = "hashtag") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Entity +public class Hashtag extends BaseTime { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "hashtag_id") + private Long hashtagId; + + @Column(length = 20, nullable = false) + private String name; + + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "video_id") + private Video video; + + +} diff --git a/src/main/java/com/mediflix/backend/entity/MemberEntity.java b/src/main/java/com/mediflix/backend/entity/Member.java similarity index 72% rename from src/main/java/com/mediflix/backend/entity/MemberEntity.java rename to src/main/java/com/mediflix/backend/entity/Member.java index 10ba141..a6a0e34 100644 --- a/src/main/java/com/mediflix/backend/entity/MemberEntity.java +++ b/src/main/java/com/mediflix/backend/entity/Member.java @@ -13,8 +13,8 @@ @Getter @Setter // 이런 Table 이름이 있다면 지우고, 새로 생성하겠다! -@Table(name = "member_table") -public class MemberEntity { +@Table(name = "member") +public class Member { //요런 형식을 갖는 컬럼들이 생성되는 것이다. //회원 번호 @@ -55,11 +55,11 @@ public class MemberEntity { private Long watch_time; // 이후 DB에 값을 저장하는 메소드 실행. (DTO -> entity) - public static MemberEntity toMemberEntity(MemberDTO memberDTO) { - MemberEntity memberEntity = new MemberEntity(); - memberEntity.setUserId(memberDTO.getUserId()); // 매개변수는 DTO에 담긴 걸 entity에 넘기는 작업이므로 get! - memberEntity.setUserPw(memberDTO.getUserPw()); - memberEntity.setMemberName(memberDTO.getMemberName()); - return memberEntity; + public static Member toMemberEntity(MemberDTO memberDTO) { + Member member = new Member(); + member.setUserId(memberDTO.getUserId()); // 매개변수는 DTO에 담긴 걸 entity에 넘기는 작업이므로 get! + member.setUserPw(memberDTO.getUserPw()); + member.setMemberName(memberDTO.getMemberName()); + return member; } } diff --git a/src/main/java/com/mediflix/backend/entity/Video.java b/src/main/java/com/mediflix/backend/entity/Video.java new file mode 100644 index 0000000..30ca994 --- /dev/null +++ b/src/main/java/com/mediflix/backend/entity/Video.java @@ -0,0 +1,39 @@ +package com.mediflix.backend.entity; + +import com.mediflix.backend.config.BaseTime; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Getter +@Table(name = "video") +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Entity +public class Video extends BaseTime { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "video_id") + private Long videoId; + + @Column(length = 20, nullable = false) + private String category; + + @Column(length = 20, nullable = false) + private String title; + + @Column(length = 20, nullable = false) + private String cast; + + @Column(name = "video_view") + private Long view; + + private LocalDateTime uploadDate; + +} diff --git a/src/main/java/com/mediflix/backend/repository/MemberRepository.java b/src/main/java/com/mediflix/backend/repository/MemberRepository.java index 837bab5..9f6604e 100644 --- a/src/main/java/com/mediflix/backend/repository/MemberRepository.java +++ b/src/main/java/com/mediflix/backend/repository/MemberRepository.java @@ -1,16 +1,16 @@ package com.mediflix.backend.repository; -import com.mediflix.backend.entity.MemberEntity; +import com.mediflix.backend.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; // DATABASE 작업을 해주는 최종 인터페이스 라고 생각해주면 된다! -public interface MemberRepository extends JpaRepository { +public interface MemberRepository extends JpaRepository { //첫번째 인자는 어떤 Entity 클래스를 받을 것인지를 나타내고, 두 번째 인자는 Entity 클래스의 PK 타입을 적어주는 것이다.(ID) //이메일로 회원 정보를 조회함. (select * from member_table where member_email=?) 와 같은 형태 // Optional 은 null 방지를 해줌. - Optional findByUserId(String userId); + Optional findByUserId(String userId); } diff --git a/src/main/java/com/mediflix/backend/service/MemberService.java b/src/main/java/com/mediflix/backend/service/MemberService.java index f24f8af..4288a2d 100644 --- a/src/main/java/com/mediflix/backend/service/MemberService.java +++ b/src/main/java/com/mediflix/backend/service/MemberService.java @@ -1,7 +1,7 @@ package com.mediflix.backend.service; import com.mediflix.backend.dto.MemberDTO; -import com.mediflix.backend.entity.MemberEntity; +import com.mediflix.backend.entity.Member; import com.mediflix.backend.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,8 +22,8 @@ public void save(MemberDTO memberDTO) { // repositry의 save메서드를 호출해야 한다. (조건 : entity 객체를 넘겨줘야 한다.) // 1. dto -> entity 변환. // 2. repository의 save 메서드를 호출해야 한다. - MemberEntity memberEntity = MemberEntity.toMemberEntity(memberDTO); - memberRepository.save(memberEntity); // save()메서드는 JPA가 제공하는 메서드임. + Member member = Member.toMemberEntity(memberDTO); + memberRepository.save(member); // save()메서드는 JPA가 제공하는 메서드임. } @@ -33,17 +33,17 @@ public MemberDTO login(MemberDTO memberDTO) { 1. 회원이 입력한 이메일로 DB에서 조회를 한다. 2. DB에서 조회한 비밀번호와 사용자가 입력한 비밀번호가 일치하는지 판단한다. */ - Optional byUserId = memberRepository.findByUserId(memberDTO.getUserId()); + Optional byUserId = memberRepository.findByUserId(memberDTO.getUserId()); if (byUserId.isPresent()) { // 조회 결과가 있다.(해당 이메일을 가진 회원 정보가 있다.) - MemberEntity memberEntity = byUserId.get(); + Member member = byUserId.get(); //test // 비밀번호가 같은지 확인.. - if (memberEntity.getUserPw().equals(memberDTO.getUserPw())) { + if (member.getUserPw().equals(memberDTO.getUserPw())) { // 비밀번호 일치 // entity -> dto 변환 후 리턴 - MemberDTO dto = memberDTO.toMemberDTO(memberEntity); + MemberDTO dto = memberDTO.toMemberDTO(member); return dto; } else { @@ -59,11 +59,11 @@ public MemberDTO login(MemberDTO memberDTO) { // 회원목록 조회 로직 public List findAll() { - List memberEntityList = memberRepository.findAll(); + List memberList = memberRepository.findAll(); List memberDTOList = new ArrayList<>(); - for (MemberEntity memberEntity: memberEntityList) { + for (Member member : memberList) { //DTO객체를 담기 위한 List - memberDTOList.add(MemberDTO.toMemberDTO(memberEntity)); + memberDTOList.add(MemberDTO.toMemberDTO(member)); // 위의 문장이랑 같은 의미. // MemberDTO memberDTO = MemberDTO.toMemberDTO(memberEntity); @@ -74,7 +74,7 @@ public List findAll() { //개인 회원 상세조회 로직 public MemberDTO findById(Long id) { - Optional optionalMemberEntity = memberRepository.findById(id); + Optional optionalMemberEntity = memberRepository.findById(id); // 값이 존재할 때.. if (optionalMemberEntity.isPresent()) { // Optional로 감싸진 값을 꺼내고, DTO에 리턴한다. diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index cea490e..807f71b 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -8,10 +8,17 @@ spring: jpa: hibernate: - ddl-auto: update + ddl-auto: create properties: hibernate: format_sql: true default_batch_fetch_size: 100 show-sql: true - database: mysql \ No newline at end of file + database: mysql + # Initial Data config + defer-datasource-initialization: true + sql: + init: + data-locations: classpath:/sql/* + mode: always + separator: ^; \ No newline at end of file diff --git a/src/main/resources/sql/member.sql b/src/main/resources/sql/member.sql index 1e37e58..5f86ed4 100644 --- a/src/main/resources/sql/member.sql +++ b/src/main/resources/sql/member.sql @@ -1,6 +1,7 @@ +DELETE FROM member; -insert into member_table values(1, "정형돈", "정형외과", "정형적", "서울", "user", "user1", "user1pw", 100); -insert into member_table values(2, "유재석", null, "내맘임", "인천", "admin_1", "user2", "user2pw", 80); -insert into member_table values(3, "정준하", "치과", "식신", "대전", "user", "user3", "user3pw", 120); -insert into member_table values(4, "하하", "외과", "하하하", "대구", "user", "user4", "user4pw", 60); -insert into member_table values(5, "박명수", null, "늙은이", "제주", "admin_2", "user5", "user5pw", 200); \ No newline at end of file +insert into member values(1, "정형돈", "정형외과", "정형적", "서울", "user", "user1", "user1pw", 100); +insert into member values(2, "유재석", null, "내맘임", "인천", "admin_1", "user2", "user2pw", 80); +insert into member values(3, "정준하", "치과", "식신", "대전", "user", "user3", "user3pw", 120); +insert into member values(4, "하하", "외과", "하하하", "대구", "user", "user4", "user4pw", 60); +insert into member values(5, "박명수", null, "늙은이", "제주", "admin_2", "user5", "user5pw", 200); \ No newline at end of file