Home

0

JPA Entity - Column 매핑

목차 JPA Entity - 테이블 매핑 JPA Entity - Column 매핑 JPA Entity - 기본키 매핑 @Column| 이름 | 기능 | 기본 값 ||: ——————————— | :————————————————————————————————————————————————— |: ——- || name | 필드와 매핑할 테이블 컬럼 이름 | 객체의 필드 이름| insertable | 등록 가능 여부 (true : 등록 가능, false : 등록 불가) | True|updatable | 변경 가능 여부 (true : 변경 가능, false : 변경 불가)| nullable (DDL) | null 값 허용 여부를 설정한다. false 일 경우 not null 제약 조건 이 생성된다. || unique (DDL) | 한 컬럼에 대한 Unique 제약 조건 을 설정한다. || columnDefinition (DDL) | 데이터 베이스 컬럼 정보를 직접 줄 수 있다. | 필드의 자바 타입| length (DDL) | 문자열 길이 제약 조건을 생성한다. (String 에서만 사용 가능) | 255| precision (DDL) scale (DDL) | BigDecimal 타입에서 사용한다. precision 은 소수점을 포함한 자릿수를 scale 은 소수의 자릿수다. double 과 float 타입에는 적용되지 않는다. | @Enumerated 자바 Enum Type 을 매핑할 때 사용 value EnumType.ORIGINAL : enum 순서를 데이터 베이스에 저장 (Integer) EnumType.STRING : enum 이름을 데이터 베이스에 저장 (String) EnumType.STRING : enum 이름을 데이터 베이스에 저장 (String) | EnumType.ORIGINAL | --> @Temporal value TemporalType.DATE : 날짜 정보, 데이터 베이스 date 타입과 Mapping TemporalType.TIME : 시간 정보, 데이터 베이스 time 타입과 Mapping TemporalType.TIMESTAMP : 날짜와 시간, 데이터 베이스 timestamp 와 Mapping

0

JPA Entity - 테이블 매핑

목차 JPA Entity - 테이블 매핑 JPA Entity - Column 매핑 JPA Entity - 기본키 매핑 Entity 매핑에 사용하는 어노테이션 객체와 테이블 매핑 : @Entity , @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관 관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA 가 관리하는 클래스JPA 를 사용하기 위해서는 반드시 Entity 어노테이션을 붙여줘야 한다. 파라미터가 없는 기본 생성자를 반드시 생성해줘야 한다. final 클래스, enum, interface, inner 클래스 에는 사용이 불가능 하다. 저장할 field 에 final 키워드는 사용이 불가능하다. @Table Table 어노테이션은 Entity 와 매핑할 Database Table 을 지정한다.

0

Spring AOP - 용어 정리

목차 Spring AOP - Advice 종류 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 Spring AOP - Aspect 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. 조인 포인트 (JoinPoint) 어드바이스가 적용될 수 있는 위치 메소드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점 AOP 를 적용할 수 있는 모든 지점(추상적인 개념) Spring AOP 는 프록시 방식을 사용하므로 조인 포인트는 항상 메소드 실행 시점으로 제한된다. 포인트 컷 (Pointcut) 어드바이스가 적용될 위치를 선별하는 기능

0

Spring AOP - 적용 방식

목차 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 Spring AOP - Aspect 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. 횡단 관심 사항횡단 관심 사항(Cross-cutting Concern)은 애플리케이션 전반에서 공통적으로 사용되는 기능입니다. 즉, 여러 모듈에서 공통으로 사용되는 기능으로서, 여러 코드에 걸쳐 분산되어 있을 수 있습니다. 이러한 횡단 관심 사항은 핵심 비즈니스 로직과 분리되어 있기 때문에 애플리케이션의 유지 보수성과 확장성에 영향을 미칩니다. 횡단 관심 사항의 예로는 로깅, 보안, 트랜잭션 처리 등이 있습니다. 예를 들어, 여러 모듈에서 공통적으로 로그를 출력해야 한다면, 모든 코드에 로그를 출력하는 코드를 추가해야 합니다. 하지만 이러한 방식은 유지 보수성이 떨어지고 코드 중복이 발생합니다. 이를 해결하기 위해 로그 출력과 같은 공통 기능을 모듈화하고 재사용 가능한 코드로 만들어주는 것이 바로 AOP의 역할입니다. AOP를 사용하면 핵심 로직 코드를 수정하지 않고도 횡단 관심 사항을 처리할 수 있습니다. 즉, 공통 기능을 모듈화하여 애플리케이션 전반에서 쉽게 사용할 수 있게 됩니다. 이를 통해 애플리케이션의 유지 보수성과 확장성이 향상되며, 코드의 가독성도 높아지는 등의 장점을 가집니다. Spring AOP AOP 를 사용하면 핵심기능 과 부가기능 이 코드상 완전히 분리 된다.

0

JAVA - Garbage Collection(가비지 컬렉션)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JAVA - Garbage Collection(가비지 컬렉션) 동적 할당 받은 메모리 중에서 사용하지 않는 메모리를 해제해 메모리 누수를 막는 메모리 관리 기법 memory leak 을 없앨 수 있다. GC Root가 될 수 있는 대상들 Stack 영역의 데이터 Static 데이터 JNI에 의해 생성된 객체들 Mark And Sweep 알고리즘 참조가 유효한 Object를 Reachable 참조가 유효하지 않은 Object를 Unreachable 이라고 부른다. Mark GC Root로부터 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹하는 과정 Mark 과정에서 Reachable 한 객체와 Unreachable 한 객체를 스캔한다 Sweep Unreachable한 객체를 Heap 에서 제거하는 과정 Compact Sweep 후 분산된 객체들을 모아 메모리 단편화 가 이뤄지는 것을 막아준다.

0

JAVA - JWT

JAVA - JWT Jwts.builder(JwtBuilder) 를 이용해 Token 을 생성하고 Jwts.parserBuilder(JwtParserBuilder) 를 이용해 전달 받은 Token 을 Parsing 한다. public class JwtMain { public static void main(String args[]) { String jwt = Jwts.builder() .setSubject("test") .compact(); Jwt<Header, Claims> headerClaimsJwt = Jwts.parserBuilder() .build() .parseClaimsJwt(jwt); // Token 정보를 가져온다. System.out.println("token : " + jwt); // JWT Header 정보를 가져온다. System.out.println("JWT Header : " + headerClaimsJwt.getHeader()); // JWT Body(Claims) 정보를 가져온다. System.out.println("JWT Claims : " + headerClaimsJwt.getBody()); }} Token 에 서명을 진행하지 않았기 때문에 Signature 부분이 빠져있는 것을 확인할 수 있다. token : eyJhbGciOiJub25lIn0.eyJzdWIiOiJ0ZXN0In0.JWT Header : {alg=none}JWT Claims : {sub=test} JWT 암호화 (JWS) JwtBuilder 객체는 signWith 메소드를 이용해 Key 값과 암호 알고리즘 을 인자값으로 넘겨줘 서명한다. 서명의 유효성은 JwtParserBuilder 객체가 setSigningKey 메소드를 이용해 전달받은 Token 이 유효한지 확인한다. public class JwsMain { public static String key = "amF2YS1hcHBsaWNhdGlvbi1zZWN1cmUtc3R1ZHktand0LXNlY3JldGtleS1pcy1zaG91bGQtYmUtYmlnZ2VyLXRoYW4tNTEyYml0cw=="; public static Long tokenValidityInMilliseconds = 100000L; public static void main(String args[]) { Key secretKey = Keys.hmacShaKeyFor(key.getBytes()); String jwt = Jwts.builder() .setSubject("test") .signWith(secretKey, SignatureAlgorithm.HS512) // JWT 를 암호화 하기 위한 secret 과 알고리즘을 넣어준다. .compact(); Jws<Claims> claimsJws = Jwts.parserBuilder() .setSigningKey(secretKey) .build() .parseClaimsJws(jwt); Header header = claimsJws.getHeader(); Claims body = claimsJws.getBody(); System.out.println("token : " + jwt); System.out.println("JWT Header : " + header); System.out.println("JWT Claims : " + body); }}

0

JAVA - JVM (자바 가상 머신)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JVM (자바 가상 머신) 자바 컴파일러에 의해 생성된 자바 바이트 코드(.class) 를 OS에 맞는 기계어로 변환해 실행할 수 있게 해준다.클래스 파일로 떨어질 수 있으면 어떤 언어라도 실행이 가능하다. (ex. kotlin) 자바 컴파일러에 의해 생성된 바이트 코드를 실행하는 표준이자 구현체다. JVM은 각 OS(운영체제) 에 맞게 설계가 돼 있다. 자바 바이트 코드만 있으면 JVM을 이용해 어느 운영체제에서나 실행이 가능하다. Stack 기반 가상 머신 JVM 구조 Class Loader, Memory, 실행 엔진(Execution Engine) 이 세가지로 구성 돼 있다.

0

Spring AOP - Aspect

목차 Spring AOP - Advice 종류 Spring AOP - 트랜잭션 순서 Spring AOP - Pointcut 참조 Spring AOP - 어드바이스 추가 Spring AOP - Pointcut 분리 Spring AOP - @Aspect Spring AOP - 용어 정리 Spring AOP - 적용 방식 Spring AOP - Aspect 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. Aspect 부가 기능 과 부가 기능 을 어디에 적용할지 적용할지를 정의 Aspect 는 애플리케이션 전반에서 공통적으로 사용되는 기능들을 모듈화하고, 재사용 가능한 코드로 만들어주는 모듈화 기능입니다. Aspect 를 사용한 프로그래밍을 관점 지향 프로그래밍 AOP (Aspect-Oriented Programming) 이라 합니다. AOP 를 적용함으로써 핵심 로직 코드를 수정하지 않고도 횡단 관심 사항(cross-cutting concern) 을 처리할 수 있습니다. Spring에서는 Aspect를 정의하기 위해 @Aspect 어노테이션을 사용하며, Aspect를 구현하기 위해 @Before, @After, @Around 등의 Advice 어노테이션을 사용합니다. 이러한 어노테이션을 사용하여 Advice를 구현하고, @Pointcut 어노테이션을 사용하여 Pointcut을 정의합니다. Aspect를 구현하여 애플리케이션 전반에 걸쳐 공통 기능을 모듈화하고 재사용 가능한 코드로 만들 수 있습니다. 이를 통해 애플리케이션의 유지 보수성과 확장성을 향상시킬 수 있습니다.

0

BeanPostProcessor - 하나의 프록시에 여러개의 Advisor 적용

목차 BeanPostProcessor - 하나의 프록시에 여러개의 Advisor 적용 BeanPostProcessor - AutoProxyCreator BeanPostProcessor 를 이용한 프록시 객체 생성 BeanPostProcessor Spring 핵심원리 고급편 - ProxyFactory 적용 Spring 핵심원리 고급편 - 여러 Advisor 와 함께 적용 Spring 핵심원리 고급편 - Spring 에서 제공하는 Pointcut Spring 핵심원리 고급편 - Pointcut 만들기 Spring 핵심원리 고급편 - Advisor Spring 핵심원리 고급편 - MethodInterceptor Spring 핵심원리 고급편 - ProxyFactory 참고본 포스트는 김영한의 스프링 핵심 원리 - 고급편 내용을 참고해 만들었습니다. 여러개의 Advisor 적용빈 후처리기에서 프록시 객체 생성시 여러개의 포인트컷에 해당되는 객체가 있습니다. 객체가 여러개의 포인트 컷에 해당되더라도 프록시 객체는 한개만 생성됩니다. Advisor1 의 포인트 컷만 만족 프록시 객체 1개 생성, advisor1 만 포함 Advisor1, Advisor2 의 포인트 컷 모두 만족 프록시 객체 1개 생성, advisor1, advisor2 모두 포함 Advisor1, Advisor2 의 포인트 컷 모두 만족하지 않음 프록시 객체를 생성하지 않음 하나의 프록시에 여러개의 Advisor하나의 프록시 객체에 여러개의 Advisor 를 포함하는 형태로 프록시 객체가 생성됩니다.