수정되거나, 생성된 날짜를 기록하는 컬럼이 중복되는데, 엔티티마다 이것을 작성하는 것보다,BaseEntity를 작성해서, 중복되는 컬럼을 처리해보자 //BaseEntity.java @MappedSuperclass @EntityListeners(value = AuditingEntityListener.class) @Getter abstract class BaseEntity { @CreatedDate @Column(name = "regdate",updatable = false) private LocalDateTime regDate; @LastModifiedDate @Column(name = "moddate") private LocalDateTime modDate; }@MappedSuperclass와 @Enti..
@Entity @Getter @ToString(exclude = "memberId")//꼭, 다른 엔티티에 의존하는 컬럼을 tostring에서 제외시킬것 public class Order extends BaseEntity{ @Id @GeneratedValue @Column(name = "order_id") private Long orderId; //targetEntity로 어떤 엔티티에 의존할지 설정하고, fetch로 지연조회 설정할것 //지연조회를 설정하지 않으면, 멤버가 필요하지 않은 상황에서도 함께 조회하게 됨 //그래서 지연 조회를 설정하고 필요할 때만 즉시조회 설정하는게 성능상 이득임 @ManyToOne(targetEntity = Member.class,fetch = FetchType.LAZY)..
단순한 쿼리는 SpringJpa에서 제공해주는 JpaRepository 를 사용하기로 했다.public interface MemberJpaRepository extends JpaRepository { }여기에는 DI 등록용 @Repository 어노테이션을 붙일 필요가 없다. 상속받고있는 클래스에 이미 있기때문이다. 테스트를 작성한다. @SpringBootTest @Transactional @Commit class MemberJpaRepositoryTest { @Autowired private MemberJpaRepository memberJpaRepository; @Test public void 멤버저장테스트(){ IntStream.rangeClosed(1,100).forEach(i->{ Member ..
https://www.youtube.com/watch?v=bEtTpCviSc4&ab_channel=SKplanetTacademy 김영한 선생님의 세미나 내용중 연관관계 매핑에 대한 이야기가 있어서, 그걸 토대로 머리속을 정리해 보려고 한다. 테이블과 똑같이 연관관계를 설정했을 경우 (ID-외래키만 가져오기)테이블에 FK만 가져와서 TeamId 이런식으로 저장하는 방식객체를 참조하기 보다 외래키를 가져와서 저장하고 있는 방식이다.조회를 할 때, 두번 따로 조회를 해야한다(쿼리가 두 번 나간다.)데이터지향적인 방법이다(객체지향적인 방법이 아니다.) 단방향 매핑위의 TeamId를 Team타입의 객체로 변경사실상 데이터베이스는 위와 같은데, 객체를 참조하고 있다는게 다른 점이다.위에서 teamId를 찾아서 db..
@ModelAttribute는 form이나, 쿼리스트링에 담긴 키 밸류 값을 dto 형식으로 받기위해 존재한다.그러나, 가끔 쿼리에 널값이나 빈값이 들어갈 때가 존재한다. 그럴때를 위해서 기본값을 지정해야하는데,DTO의 생성자에 기본값을 지정하면, null이 들어갈 때가 있다.(지원하지 않는 타입의 변수값이 들어감)ex) int값의 변수 name에 문자가 들어가던지, 빈String(””)이 들어갈 때, null로 처리되게 된다.이 때, Setter에서 if 문을 통해, null값이 들어왔을때의 기본값을 지정해주면, 빈값이 들어오더라도, 기본값으로 설정할 수 있고, 굳이 항목 하나하나 defaultValue를 입력하고 변수를 나눠줄 필요없이 dto로 받을 수 있게 된다. Uploaded by N2T
스프링 시큐리티를 위한 사전 지식세션유저가 웹 브라우저를 키고 주소창에 www.naver.com처럼 입력(GET요청)서버에서 메서드에 따라서 html파일을 반환해줌html파일에는 헤더와 바디가 있는데, 헤더에 쿠키라는 것을 넣어서 반환해줌(SESSION ID에 아이디가 담겨서 옴)클라이언트의 두 번째 요청부터는 그 세션아이디가 요청에 담겨서 가게됨서버는 돌대가리라서 세션아이디가 없으면 처음왔는지 두번왔는지 기억을 못함 ㅋㅋ서버는 세션아이디를 발급할 때마다 그 목록을 생성해야함(누가 어떤 세션아이디를 가지고있는지 알기위함) 세션이 제거되는 때는 서버에서 제거하거나, 사용자 브라우저가 전부 종료되거나, 시간이 지나면 삭제된다. 단점클라이언트가 엄청 많을때 로드밸런싱이 일어나는데, 이때 서버는 여러개가 된다...
내가 작업할 때 생각나는 것부터 하는 경향이 있다.주먹구구식에서 탈피하기 위해 순서를 정해둘 생각이다.지금은 JPA에 다시 익숙해지기 위해서 연습 프로젝트를 깃헙에 생성중인데,생성한 깃헙의 커밋 순서를 보고 정리한 후, 그 순서를 보면서 프로젝트를 만들어나갈 예정이다. 순서가 일단 정해저있으면 어떤걸 만들지 라는 생각을 하지 않아도 되고, 즉 코드를 쓸 때 좀 더 코드에만 집중할 수 있기 때문에 순서를 정하고 작업해 나가기로 했다. https://github.com/cvcvcx/jpaPrectice002이 깃헙 링크의 작업 순서를 정리한다.intelliJ의 설정에 있는 Build - gradle - Java 설정을 해주어야 한다. (boot3.0 버전부터 자바17이전버전지원안함)따라서, gradle에 j..
- Total
- Today
- Yesterday
- spring data JPA
- @BaseEntity
- 배열
- security
- notion
- ModelAttribute
- Python
- dto
- 11기
- 작업 순서정리
- Config
- Java
- 데이터베이스 설계
- QueryDSL
- 일대다
- test
- 커맨드객체
- SSAFY
- 코딩테스트
- 다대일
- 취업
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |