Language (102) 썸네일형 리스트형 [Entity] 엔티티와 영속성 컨텍스트 엔티티(Entity)란?비즈니스 요구 사항을 모델링한 객체엔티티 설정의 필수 사항기본 생성자 필수@Entity 어노테이션 name의 속성(테이블명) 지정 가능기본값은 클래스 이름과 동일@Id 영속성 컨텍스트에서 엔티티를 관리할 때 구분하기 위해 사용(식별자 역할)@GeneratedValueJPA 기본키 생성 전략4가지 설정 존재GenerationType.AUTO hibernate.dialect에 설정된 DB 종류에 따라 하이버네이트가 자동으로 전략 선택단, 하이버네이트를 무조건 신뢰해서는 안 됨MySQL의 경우 AUTO 설정을 하면 당연히 Identity 전략을 취할 것이라 생각하고 생략하거나, 추후 DMBS 종류 변경을 고려하여 AUTO로 사용하는 경우가 있는데, 버전에 따라 선택되는 전략이 달라질 수.. [JPA/Hibernate] Hibernate 기초 Hibernate란?객체 지향 프로그래밍과 관계형 데이터베이스 설계의 관점 차이를 해결하여 개발자가 더 객체 지향 프로그래밍에 집중할 수 있도록 해주는 ORM 중 하나Java에서는 JPA가 표준 인터페이스로 있으며 구현체 중 가장 많이 사용되는 것이 Hibernate→ 즉, 앞서 포스팅한 JPA(인터페이스)의 구현체(클래스)가 Hibernatehttps://bestdevelop-lab.tistory.com/227 [JPA] JPA의 개념 / JPA를 사용해야하는 상황과 그렇지 못한 상황JPA(Java Persistence Api)란? 자바에서 사용하는 ORM(Object-Relational Mapping) 기술 표준자바 애플리케이션과 JDBC 사이에서 동작하며 자바 인터페이스로 정의ORM(객체 관계 맵핑.. [JPA] JPA의 개념 / JPA를 사용해야하는 상황과 그렇지 못한 상황 JPA(Java Persistence Api)란? 자바에서 사용하는 ORM(Object-Relational Mapping) 기술 표준자바 애플리케이션과 JDBC 사이에서 동작하며 자바 인터페이스로 정의ORM(객체 관계 맵핑, Object-Relational Mapping)이란?객체와 관계형 데이터베이스의 데이터를 매핑하는 기술ORM 프레임워크가 객체와 데이터베이스 중간에서 매핑객체와 테이블을 매핑하여 패러다임 불일치 문제를 해결ORM의 종류Hibernate Java 기반의 ORM 프레임워크로 JPA를 구현하여 많이 사용객체와 테이블을 매핑하고 SQL을 작성하지 않고도 CRUD 작업 가능Mybatis SQL 맵퍼로 ORM과 유사한 기능을 제공하면서도 SQL을 XML로 작성하여 직접 관리엄밀히 따지면 Myb.. Call by Value와 Call by Reference의 차이 Call by Value메서드를 호출할 때 값을 넘겨주기 때문에 Pass by Value 라고도 함메서드를 호출하는 호출자(Caller)의 변수와 호출 당하는 수신자(Callee)의 파라미터는 복사된 서로 다른 변수값만을 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 영향 XCall by ReferenceCall by Reference는 참조(주소)를 직접 전달하며 Pass by Reference 라고도 함참조를 직접 넘기기 때문에 호출자의 변수와 수신자의 파라미터는 완전히 동일한 변수메서드 내에서 파라미터를 수정하면 그대로 원본 변수에도 반영JVM 메모리에 변수가 저장되는 위치Java의 Call by Value에 대해 이해하기 위해서는 변수 생성 시 메모리에 어떻게 저장 되는 지 알아야.. [Redis] 캐시란? Redis 캐시(Cache) 전략캐시 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술일반적으로 캐시는 주기억장치(RAM)을 사용하기 때문에 데이터베이스보다 훨씬 빠르게 데이터 응답이 가능단, RAM은 용량이 한정적이기 때문에 모든 데이터를 캐시에 저장할 경우 용량 부족 상태가 발생따라서, 아래의 기준을 정해두어야 함어느 종류의 데이터를 저장할 것인가?얼만큼 데이터를 캐시에 저장할 것인가?얼마나 오래된 데이터를 캐시에서 삭제할 것인가?[ DB I/O vs Redis 캐시 ]ㅇ Database와 Redis의 저장 위치 - 데이터베이스의 저장 위치 : 일반적으로 보조기억장치(HDD or SSD) - Redis(In-memory Data Store)의 저장 위치 : 주기억장치(RAM.. [JWT] Refresh Token을 이용한 Access Token 재발급 Refresh Token을 이용한 Access Token 재발급 로직@Overridepublic GatewayFilter apply(Config config) { return ((exchange, chain) -> { // 생략 String token = jwtUtil.substringToken(authorization); log.info("authorization = {}", authorization); try { jwtUtil.validateToken(token); return chain.filter(exchange); } catch (SecurityException | MalformedJwtE.. [PasswordEncoder] BCryptPasswordEncoder Spring Security 의존성을 추가 해야만 PasswordEncoder 제공PasswordEncoder의 구현체인 BCryptPasswordEncoder은 Hashing(해싱) 방식을 사용하여 복호화가 불가능한 단방향 방식비밀번호는 노출이 되어서는 안 되기 때문에 암호화를 시키고 복호화를 할 필요가 없이, 사용자가 입력한 비밀번호가 맞는지만 검증하면 되기 때문에 BCryptPasswordEncoder를 사용 BCryptPasswordEncoder 사용 이유? 강력한 해시 알고리즘BCrypt는 해시 계산이 느리기 때문에 공격자가 무작위 대입 공격(Brute-force attack)을 시도하는 데 시간이 더 많이 소요Salt 자동 생성BCrypt는 내부적으로 랜덤한 salt 값을 생성하여 해싱 과정에.. [JWT] JwtUtil 사용 예제 및 설명 Enum Class = UserRolepublic enum UserRole { USER(Authority.USER), // 사용자 권한 ADMIN(Authority.ADMIN); // 관리자 권한 private final String authority; UserRole(String authority) { this.authority = authority; } public String getAuthority() { return this.authority; } public static class Authority { public static final String USER = "ROLE_USER"; public s.. 이전 1 2 3 4 5 6 7 ··· 13 다음