본문 바로가기

Spring&Spring Boot7

[JPA] 지연로딩에서 N+1 문제, Fetch Join과 Join의 차이 N+1 문제란? 연관 관계가 설정된 엔티티를 조회할 때 조회된 데이터 갯수만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어온다. n개가 100개면 쿼리가 100개가 나가게 되는 상황 현재 상황 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "member_id") private Long id; //시퀀스 private String role; //권한(user, admin) private String userId; //이메일(아이디) @Column(length = 10) private Stri.. 2022. 8. 28.
[Spring Boot] Spring MultipartFile 파일업로드 구현하기 ※ 개발 환경: Back-end Project: Gradle Project, Language: Java 11, Spring Boot: 2.6.7 Dependencies: SpringWeb, Thymeleaf, Lombok ,Validation, H2 Database, MySQL Driver, Spring Data JPA Front-end JavaScript, Thymeleaf, HTML5 파일은 문자와 다르게 바이너리 데이터를 전송해야 한다. 그리고 보통 폼을 전송할 때 문자와 바이너리를 동시에 전송해야하는 경우가 대부분일 것이다. 이 문제를 해결하기 위해 스프링이 제공하는 multipart/form-data 라는 전송 방식을 사용한다. 바이너리 파일(binart file) 바이너리 파일은 데이터의 저장.. 2022. 7. 7.
[Spring Boot] 스프링 시큐리티 - 패스워드 암호화 적용하기 Spring Security 공식 문서 Spring Security Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements spring.io Spring 기반의 Application의 보안을 위한 Spring framework 스프링 시큐리티의 PasswordEncoder를 이용하여 패스워드를 암.. 2022. 6. 29.
Junit5 에서 Exception 테스트 (Junit4 @Test(expected = exception) 코드로 보는 것이 확실하게 이해가 될 것이다. 예제: 회원가입시 중복 회원은 가입할 수 없다. service @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional public Long join(Member member) { //EXCEPTION List findMembers = memberRepository.findByName(member.getName()); //회원이름으로 조회 if (findMembers.size() > 0) { throw new IllegalStateEx.. 2022. 5. 31.
JPA란?(HIBERNATE, HIBERNATE설정, jpa 구동방식, ORM) JPA (Java Persistence API) JPA란? JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음 ORM? ORM(Object Relational Mapping) 자체적으로 쿼리문 생성(SQL문 불필요) SQL Query가 아닌 자바 코드(메서드)로 데이터 조작이 가능 물론, SQL Query도 사용할 수 있지만, @Query와 같은 Annotation으로 코드에서 사용할 수 있음 장점: SQL 중심적인 개발이 아닌 Method를 통해서 DB를 조작할 수 있어, 개발자는 객체 모델을 이용해서 비즈니스 로직을 구성하는데만 집중할 수 있음. (개발자가 CRUD용 쿼리를 따로 작성할 필요가 없다) 단점: 통계 쿼리처럼 매우 복잡한.. 2022. 4. 29.
JSP와 Thymeleaf (차이점, 동작 원리) JSP가 아닌 Thymeleaf를 쓰는 이유는? JSP와 Thymeleaf의 가장 큰 차이점은 JSP와 달리 Servlet Code로 변환되지 않는다 순수 HTML구조를 유지한다.(Natural Tamplate) 따라서 비즈니스 로직과 분리되어 오로지 View에 집중할 수 있다. 서버상에서 동작하지 않아도 된다.(JSP는 서버를 통해 Servlet코드로 변환되어 랜더링 된다) Jar 패키징이 가능하다.(사실 이것의 장점을 아직 잘 모르겠다. 더 공부해야 할 듯) Thymeleaf의 동작 원리 Web Browser가 Http Method(GET)을 통해 hello 전달 이것을 톰켓 서버가 맨 처음 받아 Spring Boot에 전달 Spring Boot는 helloController에게 내용을 전달 해 주고.. 2022. 4. 1.