Spring Boot
-
☑️[SPRING] 양방향 연관관계일 때 연관관계 편의 메서드를 만들어보장Spring Boot 2022. 12. 27. 10:42
@Entity @Table(name="orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order") private List orderItems = new ArrayList(); @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; private ..
-
[SPRING] 스프링시큐리티(Spring Security)를 사용해보장Spring Boot 2022. 12. 23. 11:23
Maven Dependency org.springframework.boot spring-boot-starter-security Gradle Dependency implementation 'org.springframework.boot:spring-boot-starter-security' 어노테이션 @Configuration 설정 컴포넌트라고 선언한다. @EnableWebSecurity 스프링 시큐리티 지원을 가능하게 한다. 이걸 설정 객체에 붙혀주면 SpringSecurityFilterChain에 등록된다. @AuthenticationPrincipal 매개변수에 선언한다. 이게 붙은 매개변수는 SecurityContextHolder에 저장된 인증 객체(Authentication 객체)의 principal ..
-
-
[SPRING] java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.dialect.MySQL5InnoDBDialectSpring Boot 2022. 12. 19. 17:01
H2 콘솔을 사용하다가 AWS에서 만든 DB RDS로 바꾸니 일어난 에러이다. 찾아보니 dialect라는 것이 '방언' 이라는 뜻을 가지고 있는데, MySQL이 JPA 방언을 인식하지 못하는 상황이 발생한 것이다. 원래는 따로 설정이 없어도 MySQL이 방언을 이해할 수 있었는데, 자바 버전이 올라감에 따라(현재 프로젝트 버전 3.0.0) 수동으로 설정을 해주지 않으면 방언을 이해하지 못하게 된 것 같다. application.properties에 아래 코드만 추가했을 때 에러가 발생했다. spring.datasource.url=jdbc:mysql://springboot-db.cxtctpbh0bfs.ap-northeast-2.rds.amazonaws.com:3306/myselectshop spring.d..
-
[SPRING] 공백과 NULL 확인할땐 StringUtils.hasText()Spring Boot 2022. 12. 14. 16:10
System.out.println(StringUtils.hasText(null)); // false System.out.println(StringUtils.hasText("")); // false System.out.println(StringUtils.hasText(" ")); // false System.out.println(StringUtils.hasText("A")); // true isBlank()와 혼동할 수 있는데, isBlack()는 문자열을 판단하기 때문에 null은 판단할 수 없다.
-
[SPRING] DI(의존성 주입)가 무엇이고, IoC 컨테이너는 어떻게 사용할까?Spring Boot 2022. 12. 12. 17:58
DI (의존성 주입) 의 이해 일반적인 구조의 한계 그동안 프로젝트 구조를 살펴보면, Controller 클래스에서 new Service를 만들고, Service 클래스에서 new Repository를 만들어 각각의 객체에서 함수를 만들어 불러오는 식으로 작업의 역할분담을 했다. 만약에 여기서 new Repository에 username, password를 파라미터로 전달받아 DB에 접속 시 사용해야 하는 기획으로 변경되었다면 어떻게 해야 변경이 되어야할까? // Controller에서 username과 password 전달 new Service("이재원", "123456") // Service에서 전달받은 값을 또다시 Repository에 전달 (username, password)-> new Repos..