Java193 Junit & AssertJ package com.blog; import org.junit.jupiter.api.*; public class JUnitCycleTest { @BeforeAll // 전체 테스트 시작 전 1회 실행 (static으로 선언) static void beforeAll(){ // DB 연결이나 테스트 환경 초기화할 때 사용 System.out.println("@BeforeAll"); } @BeforeEach // 테스트 케이스 시작 전마다 실행 public void beforeEach(){ // 메서드에 사용되는 객체 초기화하거나 미리 필요한 값을 넣는 경우 사용 System.out.println("@BeforeEach"); } @Test public void test1(){ System.out.println.. 2023. 12. 2. Thymeleaf 경로 설정하기 thymeleaf에서 static에 있는 정적 리소스를 접근하려면 이런식으로 바로 접근이 가능하다(현재 프로젝트에는 static/assets/js/js파일 구조 이다.) 하지만 templates의 도메인별 폴더를 만들어서 thymeleaf-layout-dialect를 적용했더니 경로가 안맞아서 파일이 다 깨졌다... thymeleaf 공부안하고 무작정 하니 이런 문제가 발생하는구나. thymleaf에도 jsp처럼 Context Path 사용이 가능하다. @{/} 표현식으로 상대경로 문제를 처리해줄 수 있다. See User Profile 변수 표현식도 중첩 사용가능하다. 여러개의 매개변수도 쉼표로 구분해서 사용 가능하다. @{/order/process(execId=${execId},execType='FA.. 2023. 11. 30. spring security에서 @PreAuthorize가 안먹힐때 (SpringBoot 3.0 이상) 나는 컨트롤러 메소드에 API별로 @PreAuthorize를 넣었는데 시큐리티가 해당 어노테이션을 수행하지 않았다. 그래서 검색해봤다. 클래스 상단에 @EnableMethodSecurity를 붙여주면 해결된다. import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; 아쉽게도 spring security6버전 이상 자료는 아직 많이 없는 듯 하다.... package com.nahwasa.springsecuritybasicsettingforspringboot3.controller; import org.springframework.security.access.prepost.PreAuthori.. 2023. 11. 27. JPA실전1 정리 스프링 부트 스타터(https://start.spring.io/)) 스프링부트로 설정이 다 자동화되었다. persistence.xml없다. 쿼리파라미터 남기는 라이브러리. build.gradle에 등록.(개발단계에서만 사용하는 것을 권장함. 개발단계에서는 편하게 사용해도 된다. 운영시스템에 적용하려면 성능테스트 꼭 필요.(성능저하 이슈) implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 예제 설계에서 Member 엔티티에 사실 OrderList는 필요 없다. Order에서 Member 정보 참조해서 하면 됨. * 참고: 회원이 주문을 하기 때문에, 회원이 주문리스트를 가지는 것은 얼핏 보면 잘 설계한 것 같지만, 객체 세 .. 2023. 11. 26. JPQL - Named 쿼리, 벌크연산 Named 쿼리 - 정적쿼리 미리 정의해서 이름을 부여해두고 사용하는 JPQL. 어노테이션이나 xml에 정의한다. Spring Data JPA에서는 인터페이스 메소드 위에다가 바로 @Query 어노테이션으로 사용가능 -> 실무에서는 스프링데이터jpa써야겠죠? Named 쿼리 장점: 애플리케이션 로딩 시점에 초기화 한 후 재사용, 애플리케이션 로딩시점에 쿼리 검증함..(쿼리 이상하면 QuerySyntaxException오류 발생) 캐시하고 있어서 코스트 절약 @Entity @NamedQuery( name = "Member.findByUsername", // 클래스명.###이 관례임 query = "select m from Member m where m.username = :username" ) public.. 2023. 11. 22. JPQL - fetch join(패치조인) - 적극활용 권장 이거 모르면 실 무 못 함. 데이터 여러개 조회할 때 좋음 JPQL에서 성능 최적화를 위해 제공함.페치 조인은 객체 그래프를 SQL한번에 조회한다.(즉시로딩)명시적으로 즉시로딩 하는거라고 볼 수 있음, 프록시 아니고 진짜데이터 들고옴. 주로 조회성 기능할때 사용 String jpql = "select m from Member m join fetch m.team"; List members = em.createQuery(jpql,Member.class) .getResultList(); for (Member member : members) { System.out.println("username = " + member.getUs.. 2023. 11. 21. 이전 1 ··· 5 6 7 8 9 10 11 ··· 33 다음